tutorial metodos for example clase java arraylist

metodos - java arraylist int



Agregue un objeto a una ArrayList y modifíquelo más tarde (3)

Si tengo una ArrayList, y agregué un objeto a ella, y luego modifiqué este objeto, ¿se reflejará este cambio en ArrayList? o cuando agrego el objeto a ArrayList, Java crea una copia y la agrega a ArrayList?

¿Qué pasa si cambio la referencia a este objeto a nulo? ¿Significa eso que el objeto en el ArrayList ahora también es nulo?


¿se reflejará este cambio en ArrayList?

Sí, ya que agregó una referencia al objeto en la lista. La referencia que agregó seguirá apuntando al mismo objeto, (que usted modificó).


o cuando agrego el objeto a ArrayList, Java crea una copia y la agrega a ArrayList?

No, no copiará el objeto. (Copiará la referencia al objeto).


¿Qué pasa si cambio la referencia a este objeto a nulo? ¿Significa eso que el objeto en el ArrayList ahora también es nulo?

No, ya que el contenido de la referencia original se copió cuando se agregó a la lista. (Tenga en cuenta que es la referencia que se copia, no el objeto).

Demostración:

StringBuffer sb = new StringBuffer("foo"); List<StringBuffer> list = new ArrayList<StringBuffer>(); list.add(sb); System.out.println(list); // prints [foo] sb.append("bar"); System.out.println(list); // prints [foobar] sb = null; System.out.println(list); // still prints [foobar]


Cualquier cambio en el objeto se reflejará en la lista.

Sin embargo, cuando trabaje con objetos como cadenas inmutables, se creará un nuevo objeto en "operaciones de cambio". De hecho, tu viejo objeto aún está en la lista mientras recibes uno nuevo en otro lugar.


Quería agregar otra demostración donde ArrayList está dentro de un mapa como el valor. ArrayList se modifica después de agregar al mapa y el mapa refleja los cambios.

El mapa tiene un elemento con el nombre de la madre como clave e hijos como valor.

String key = "adeleMom"; Map<String, ArrayList<String>> myMap = new HashMap<String, ArrayList<String>>(); ArrayList<String> firstList = new ArrayList<String>(); firstList.add("adele"); myMap.put(key, firstList); firstList = null; ArrayList secondList = myMap.get(key); System.out.println(secondList); // prints [adele] secondList.add("bonnie"); System.out.println("Added bonnie"); ArrayList thirdList = myMap.get(key); System.out.println(thirdList); // prints [adele, bonnie]