Foros del Web » Programación para mayores de 30 ;) » Java »

Listas ordenadas

Estas en el tema de Listas ordenadas en el foro de Java en Foros del Web. Buenas, Tengo una clase FaultReportList que almacena en una lista enlazada objetos de otra clase llamada FaultReport y me piden que desde otra clase diferente ...
  #1 (permalink)  
Antiguo 29/10/2010, 15:00
 
Fecha de Ingreso: octubre-2010
Ubicación: MADRID
Mensajes: 13
Antigüedad: 13 años, 6 meses
Puntos: 0
Listas ordenadas

Buenas,

Tengo una clase FaultReportList que almacena en una lista enlazada objetos de otra clase llamada FaultReport y me piden que desde otra clase diferente llamada Customer liste esos objetos ordenados por diferentes criterios.

En concreto me piden un listado por el mismo orden en que fueron registrados los objetos dentro de la lista y otro listado ordenado por el atributo "code".

¿Alguna idea de como hacer esto? Estoy investigando y parece ser que se puede hacer con un ListIterator, pero no se como hacerlo.

Agradecería cualquier indicación o ejemplo que me pudierais proporcionar.

Muchas gracias.
  #2 (permalink)  
Antiguo 29/10/2010, 15:35
Avatar de Xerelo  
Fecha de Ingreso: mayo-2009
Mensajes: 2.175
Antigüedad: 14 años, 11 meses
Puntos: 306
Respuesta: Listas ordenadas

Es una interface, no una clase.

Utiliza LinkedList para mantener el orden de entrada.
__________________
Cada vez que solucionas los problemas de alguien que no se esfuerza, piensa en que el día de mañana puede llegar a ser tu compañero de trabajo, o peor, tu jefe.
  #3 (permalink)  
Antiguo 30/10/2010, 10:38
 
Fecha de Ingreso: octubre-2010
Ubicación: MADRID
Mensajes: 13
Antigüedad: 13 años, 6 meses
Puntos: 0
Respuesta: Listas ordenadas

Vale, conseguí implementar la lista pero ahora tengo otro problema.

Desde la clase MaintenanceDepartment hago esto

CustomerList customers = new CustomerList(false);


y añado objetos a la lista para luego listar su contenido (cada objeto Customer contiene una lista de ReportFault), de esta forma

for (Customer c : customers) {
System.out.println(c);
System.out.println(c.getFaultReportsAsString());
}

pero me dá este error de compilación


Exception in thread "main" java.lang.Error: Unresolved compilation problem:
Can only iterate over an array or an instance of java.lang.Iterable

at MaintenanceDepartment.main(MaintenanceDepartment.j ava:130)


Este error se refiere al "customers" de la linea del "for".

¿Alguna idea de que puede ser esto?

Gracias.
  #4 (permalink)  
Antiguo 30/10/2010, 11:26
 
Fecha de Ingreso: octubre-2010
Ubicación: MADRID
Mensajes: 13
Antigüedad: 13 años, 6 meses
Puntos: 0
Respuesta: Listas ordenadas

Se me olvidava, el constructor de la lista es así:

public CustomerList(boolean listImplementation) {
if (listImplementation){
CustomerList = new LinkedList<Customer>();
}
else{
CustomerList = new ArrayList<Customer>();
}
}
  #5 (permalink)  
Antiguo 30/10/2010, 11:34
Avatar de Xerelo  
Fecha de Ingreso: mayo-2009
Mensajes: 2.175
Antigüedad: 14 años, 11 meses
Puntos: 306
Respuesta: Listas ordenadas

Te lo está diciendo el propio error, para utilizar el iterator, tu clase CustomerList necesita implementar la interfaz Iterable.

Lo que tienes que hacer es implementar en la clase la interface Iterable y sobreescribir el método Iterator, y el él recuperar el Iterator de la List donde realmente almacena los datos.

http://es.efreedom.com/Question/1-60...ement-Iterable
__________________
Cada vez que solucionas los problemas de alguien que no se esfuerza, piensa en que el día de mañana puede llegar a ser tu compañero de trabajo, o peor, tu jefe.
  #6 (permalink)  
Antiguo 30/10/2010, 11:52
 
Fecha de Ingreso: octubre-2010
Ubicación: MADRID
Mensajes: 13
Antigüedad: 13 años, 6 meses
Puntos: 0
Respuesta: Listas ordenadas

Muchisimas gracias, tenías toda la razón y ahora ya he conseguido quitar el error.

me faltaba implementar la interfaz Iterable en la clase CustomerList.

public class CustomerList implements Iterable<Customer>


Ahora puedo seguir probando.

Muchas gracias por todo
  #7 (permalink)  
Antiguo 02/11/2010, 12:38
 
Fecha de Ingreso: octubre-2010
Ubicación: MADRID
Mensajes: 13
Antigüedad: 13 años, 6 meses
Puntos: 0
Respuesta: Listas ordenadas

Ya he conseguido añadir los FaultReports a la lista pero me ocurre algo extraño que no se como hacer para solucionarlo por más vueltas que le doy

Me explico:

por ejemplo tenemos estos datos de entrada

Customer 1
FaultReport1 de Customer1
FaultReport2 de Customer1
FaultReport3 de Customer1
Customer 2
FaultReport1 de Customer2
FaultReport2 de Customer2
Customer 3
FaultReport1 de Customer3
FaultReport2 de Customer3
FaultReport3 de Customer3
FaultReport3 de Customer3
pero cuando listo los datos me sale de una manera parecida a esta:

Customer 1
FaultReport1 de Customer3
FaultReport2 de Customer3
FaultReport3 de Customer3
FaultReport3 de Customer3
Customer 2
FaultReport1 de Customer1
FaultReport2 de Customer1
FaultReport3 de Customer1
Customer 3
FaultReport1 de Customer2
FaultReport2 de Customer2
Es decir, que el listado de los FaultReport no corresponde con el Customer al que estan asociados. Sale como mezclado.

A ver si alguien sabe por que puede ser esto.

Gracias y saludos.

Etiquetas: listas, ordenadas
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 04:32.