Java - Patron Iterator

 
Vista:

Patron Iterator

Publicado por Luis (1 intervención) el 20/08/2009 15:26:53
Hola a todos, es la primera vez que escribo en este foro.
Estoy realizando una práctica en Java sobre la gestión de una agencia inmobiliaria. Tengo un patrón Composite que crea una estructura de arbol para almacenar en una zona (Provincia/Ciudad/Zona) un inmueble determinado (Piso/Chalet/Finca). Los elementos compuestos son las diferentes zonas, que pueden albergar los diferentes inmuebles.
Tengo que recorrer esa estructura de varias formas diferentes, una de ellas es mostrar todos los inmuebles de todas las zonas utilizando un iterador generico. Este iterador no me surge ningun problema. El problema está cuando hago un iterador que filtre los inmuebles a partir de un precio minimo, es decir, que muestre sólo los inmuebles de un precio inferior...

La llamada a la iteración la hago así:

public String verPorPrecio(int precioMinimo){
//ColeccionInmuebles coleccion = new ColeccionInmuebles(_inmuebles);
Inmueble inmueble;
StringBuffer salida = new StringBuffer();
salida.append(_identificador.toString() + " ");
//for(Iterador i = coleccion.crearIterador(precioMinimo); i.hasMoreElements(); i.nextElement()){
for(Iterador i = _inmuebles.crearIterador(precioMinimo); i.hasMoreElements();){
inmueble = (Inmueble) i.nextElement();
if(inmueble != null){
System.out.println("--> " + inmueble.toString());
salida.append(inmueble.verPorPrecio(precioMinimo) + " ");
}else{
//System.out.println("--> Inmueble no cumple las condiciones.");

}
}
return salida.toString();
}

Por otro lado, tengo la clase IteradorPrecio que es la siguiente:

public class IteradorPrecio implements Iterador {
ListaDeInmuebles _inmuebles;
int _current;
int _precioMinimo;

IteradorPrecio(ColeccionDeInmuebles coleccion, int precioMinimo){
_inmuebles = (ListaDeInmuebles) coleccion;
_current = 0;
_precioMinimo = precioMinimo;
}

public boolean hasMoreElements() {
/*boolean hayMas = _current < _inmuebles.obtenerTamanyo();
_current = _current + 1;
return hayMas;*/
return _current < _inmuebles.obtenerTamanyo();
}

public Inmueble nextElement() {
Inmueble inmueble = null;
if(_inmuebles.obtenerElemento(_current).obtenerPrecio() < _precioMinimo){
inmueble = _inmuebles.obtenerElemento(_current);
}
_current = _current + 1;
return inmueble;
}

}

El problema está en que no sé como hacer para que imprima sólo los inmuebles con precio inferior a uno dado pero sin utilizar un if para ver si el precio del elemento actual es inferior al dado en el método verPorPrecio(), sino que quiero controlarlo desde la clase IteradorPrecio. Alguna sugerencia? muchas gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder