在Java中取消对对象的引用

在Java中取消对对象的引用,java,object,arraylist,Java,Object,Arraylist,在res中没有任何更改的情况下,如何修改tmp?因为如果我以这种方式修改tmp,res中的内容也会被修改。我认为这与Java中的取消引用有关,可能是一个非常常见和重要的问题,有人能帮我解决吗?您正在寻找的 tmp.remove(tmp.size() - 1); 其思想是创建对象的副本,而不是在多个位置使用相同的引用。要保留旧的ArrayList,并将其分配给tmp: 现在,您可以在不影响旧列表的情况下复制列表。您必须复制列表并将副本存储在res: res.addnew ArrayListMP

在res中没有任何更改的情况下,如何修改tmp?因为如果我以这种方式修改tmp,res中的内容也会被修改。我认为这与Java中的取消引用有关,可能是一个非常常见和重要的问题,有人能帮我解决吗?

您正在寻找的

tmp.remove(tmp.size() - 1);
其思想是创建对象的副本,而不是在多个位置使用相同的引用。

要保留旧的ArrayList,并将其分配给tmp:


现在,您可以在不影响旧列表的情况下复制列表。

您必须复制列表并将副本存储在res:

res.addnew ArrayListMP


请记住,虽然列表是副本,但列表中的对象是相同的。因此,如果对一个列表中的对象进行更改,副本中的对象也将更改。除非您对原始列表进行深度复制。

那么,这种复制是深度复制还是浅层复制?这是浅层复制。谢谢,这里的想法是,不要将引用放入Arraylist,只需创建一个副本并将其放在那里,对吗?
tmp.remove(tmp.size() - 1);
res.add(new ArrayList<Integer>(tmp));
tmp = new ArrayList<Integer>(tmp);