Ajouter un object à un ArrayList et le modifier ultérieurement

Si j’ai un ArrayList et que j’ai ajouté un object, et plus tard j’ai modifié cet object, est-ce que cette modification sera reflétée dans ArrayList? ou lorsque j’ajoute l’object à la liste de tableaux, Java crée une copie et l’ajoute à la liste de tableaux?

Que faire si je change la référence à cet object en null? Est-ce que cela signifie que l’object dans la ArrayList est maintenant nul aussi?

ce changement se reflétera-t-il dans la ArrayList?

Oui, puisque vous avez ajouté une référence à l’object dans la liste. La référence que vous avez ajoutée indiquera toujours le même object (que vous avez modifié).

ou lorsque j’ajoute l’object à la liste de tableaux, Java crée une copie et l’ajoute à la liste de tableaux?

Non, cela ne copiera pas l’object. (Il copiera la référence à l’object.)

Que faire si je change la référence à cet object en null? Est-ce que cela signifie que l’object dans la ArrayList est maintenant nul aussi?

Non, car le contenu de la référence d’origine a été copié lors de son ajout à la liste. (N’oubliez pas que c’est la référence qui est copiée, pas l’object.)

Manifestation:

SsortingngBuffer sb = new SsortingngBuffer("foo"); List list = new ArrayList(); 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] 

Toute modification de l’object sera reflétée dans la liste.

Cependant, lorsque vous manipulez des objects tels que des chaînes qui sont immuables, un nouvel object sera créé lors des “opérations de modification”. Alors que votre ancien object est toujours dans la liste alors que vous en avez un autre ailleurs.

Je voulais append une autre démonstration où ArrayList se trouve à l’intérieur d’une carte en tant que valeur. La ArrayList est modifiée après l’ajout à la carte et la carte reflète les modifications.

La carte comporte un élément avec le nom de la mère comme clé et les enfants la valeur.

  Ssortingng key = "adeleMom"; Map> myMap = new HashMap>(); ArrayList firstList = new ArrayList(); 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]