使用局部变量更改集合中的值

时间:2016-11-05 13:25:27

标签: java collections

我的问题是,使用Java可以拥有一个集合,例如树。将树中的节点保存到变量中。它将是相同的对象地址(在我的理解中),这是否意味着使用局部变量更改节点中的数据也会更改集合中的数据?

2 个答案:

答案 0 :(得分:0)

局部变量包含对节点的引用,因此更改局部变量中的数据确实会更改它引用的对象中的数据,在这种情况下,树中的节点也将更改,因为它是同一个对象。

祝你好运

亚历

答案 1 :(得分:0)

答案是有点的。假设您有变量var,并且它的地址存储在集合things中。然后,如果您执行以下操作:var = some_var,则集合中的数据不会更改。这是因为您要覆盖赋值中的var地址。但是,如果你以某种方式修改var,两者都会改变。发生这种情况是因为地址保持不变,因此您仍在写入正确的内存。例如var.field = some_data会修改things[var].field

出于这个原因,通常最好将var的副本加载到things,这样我们就不会意外地将它们连接起来。人们经常在没有意识到的情况下将事物连接起来,然后在没有意识到集合也发生变化的情况下修改变量。