una repetidos para objetos lista eliminar elementos coleccion algoritmo agregar java arraylist collections core

repetidos - hashmap objetos java



Los objetos duplicados se agregan a la lista (4)

¿Supongo que eres nuevo en Java? Solo crear nuevas instancias en el bucle funcionará.

ArrayList<ModelClass> al = new ArrayList<ModelClass>(); for(int i=0; i<10; i++){ ModelClass obj = new ModelClass(); obj.setName(2+i); obj.setRoolno(4+i); al.add(obj); }

Esta pregunta ya tiene una respuesta aquí:

Al agregar objetos a la lista, pude ver que el objeto está reemplazando todos los valores en la lista.

Por favor, compruebe la imagen de abajo y observe el código en bucle para duplicados de objetos en la lista.

public static void main(String args[]) { ArrayList<Modelclass> al = new ArrayList<Modelclass>(); Modelclass obj = new Modelclass(); for (int i = 0; i < 10; i++) { obj.setName(2 + i); obj.setRoolno(4 + i); System.out.println(obj); //if (!al.equals(obj)) { al.add(obj); System.out.println(obj.getName() + "" + obj.getRoolno()); //} } }


Siempre estás agregando lo mismo

Modelclass obj = new Modelclass();

Que creaste fuera del bucle for. Luego, dentro del ciclo, estás modificando los valores.

Como siempre es una referencia al mismo objeto, está modificando todos los elementos en ArrayList.

Pruebe esto en su lugar:

for (int i = 0; i < 10; i++) { Modelclass obj = new Modelclass(); //This is the key to solve it. obj.setName(2 + i); obj.setRoolno(4 + i); System.out.println(obj); al.add(obj); System.out.println(obj.getName() + "" + obj.getRoolno()); }


Su problema es que está haciendo referencia al mismo objeto porque creó el objeto antes del ciclo. Debiera ser

public static void main(String args[]) { ArrayList<Modelclass> al = new ArrayList<Modelclass>(); for (int i = 0; i < 10; i++) { Modelclass obj = new Modelclass(); obj.setName(2 + i); obj.setRoolno(4 + i); System.out.println(obj); //if (!al.equals(obj)) { al.add(obj); System.out.println(obj.getName() + "" + obj.getRoolno()); //} } }


Su variable obj solo se crea una instancia una vez, pero se agrega a la lista varias veces. Cada vez que actualiza los miembros de obj , está actualizando la misma pieza de memoria y, por lo tanto, cada referencia de lista muestra los mismos datos (últimos agregados).