java - java collections 如何保存一个元素(浅或深)

在 Java collections (array, LinkedList, Set) 中,当添加一个对象时,是保存引用的副本还是将整个对象复制到集合中。如果我更改原始对象,它会影响集合的对象吗?

回答1

在 java collections (Array , LinkedList , Set) 中,添加对象时是保存引用的副本还是将整个对象复制到集合中。

它保存了一个参考。它不复制对象。

这可以从 Collection.add 方法的 https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html#add-E- 中推断出来:

boolean add(E e)

确保此集合包含指定的元素。如果此集合因调用而更改,则返回 true。

请注意,它表示该集合将包含指定元素……而不是指定元素的副本。

如果我更改原始对象,它会影响集合的对象吗?

是的。它们是同一个对象。

回答2

是的,如果您更改原始对象,它确实会更改集合内的对象。

您可以在此处阅读一个类似的问题,其中谈到 java 是通过引用传递的:https://stackoverflow.com/questions/40480/is-java-pass-by-reference-or-pass-by-value

相似文章

随机推荐

最新文章