Java ArrayList:创建数组的副本并使用旧的分隔,但不要创建新对象

例如,我有一个ArrayList:

ArrayList zoo = new ArrayList(); // some code to add animals to zoo 

我想创建这个old zoo的副本到new zoo ,我可以使用删除/添加…来处理这个新动物园。(当然,它不会影响旧动物园)。 因此,我有一种方法:创建新动物园,克隆旧动物园中的每只动物(这意味着创建动物对象)。 所以,它太慢了。

我有另一种方式:创建旧动物园的每个动物的参考,并复制到新的动物园。 所以,新动物园只是提到了动物园的动物。 所以,每次我删除/添加,…它只是删除对动物对象的引用。 没有影响旧动物园,并且没有创建新对象。

但是,我不知道如何用Java做到这一点。 请教我。

谢谢 :)

这在Java中非常简单:

 ArrayList copy = new ArrayList(zoo); 

构造函数ArrayList(Collection c)执行作为参数提供的列表的浅表副本 ,这正是您要查找的语义。

只需尝试:

 ArrayList newZoo = new ArrayList(oldZoo);