Buenas,
Cual sería la mejor forma para eliminar duplicados de un ArrayList de objetos.?
He probado con contains pero no se pueden comparar con objetos VO... Tampoco me sirve usar un Hash.
Saludos y gracias de antemano.
| |||
Eliminar duplicados ArrayList Objetos Buenas, Cual sería la mejor forma para eliminar duplicados de un ArrayList de objetos.? He probado con contains pero no se pueden comparar con objetos VO... Tampoco me sirve usar un Hash. Saludos y gracias de antemano. |
| ||||
Respuesta: Eliminar duplicados ArrayList Objetos Y si no te queda más remedio pues lo implementas tú: for (Obj obj : arrayList) { while (indexOf(obj) != lastIndexOf(obj)) { arrayList.remove(lastIndexOf(obj)); } } (lo dejo aqui porque se me ha ido la pinza bien bien, como autocrítica) Bueno me autocritico porque no puedo modificar dinámicamente un arrayList que estoy recorriendo :D Como te dice zero, la forma más rápida es copiar los objetos a un HashMap o HashSet desde tu ArrayList, así cuando encuentre un duplicado ya no lo introduce. Luego vuelves a pasar los objetos a otro arraylist y ya tienes lo que quieres. Para la otra opción ... recapitulamos: List auxArray = arrayList.clone(); // Esto recorre todos los objetos del arrayList pero comparando y eliminando en el auxiliar for (Obj obj : arrayList) { while (auxArray.indexOf(obj) != auxArray.lastIndexOf(obj)) { auxArray.remove(lastIndexOf(obj)); } } // Finalmente arrayList = auxArray();
__________________ if (fuzzy && smooth) { fuzzylog = "c00l"; return true; } Última edición por Fuzzylog; 24/09/2012 a las 01:46 |
| |||
Respuesta: Eliminar duplicados ArrayList Objetos Buenas, Para poder usar el método contains correctamente tienes que sobrescribir el método equals y getHashCode con las particularidades de la clase. Una vez sobrescritos los métodos, puedes hacerlo a mano o usando algunas de las estructuras de java:
Código Java:
Ver original Obviamente, si la lista es muy grande probablemente este no sea el mejor método y tengas que implementar tu propia forma, pero para poder usar el método contains tienes que hacer lo que te he dicho. Un saludo. |
| ||||
Respuesta: Eliminar duplicados ArrayList Objetos Argh pensé que el contains se referia a otro post parecido. Bueno, tiene mucha razón. El unico caso para el que no se sobreescribe es para ArrayLists de objetos que sean wrappers de tipos primitivos (Ejemplo String, Integer, Short...).
__________________ if (fuzzy && smooth) { fuzzylog = "c00l"; return true; } |
Etiquetas: |