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

hqt*_*hqt 1 java reference object

例如,我有一个ArrayList:

ArrayList<Animal> zoo = new ArrayList<Animal>();
// some code to add animals to zoo
Run Code Online (Sandbox Code Playgroud)

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

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

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

谢谢 :)

das*_*ght 6

这在Java中非常简单:

ArrayList<Animal> copy = new ArrayList<Animal>(zoo);
Run Code Online (Sandbox Code Playgroud)

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


Jea*_*art 5

只需尝试:

ArrayList<Animal> newZoo = new ArrayList<Animal>(oldZoo);
Run Code Online (Sandbox Code Playgroud)