繁体   English   中英

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

[英]Java ArrayList: create a copy of array and use seperate from old, but don't create new objects

例如,我有一个ArrayList:

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

我想创建这个old zoonew zoo的副本,我可以使用remove / add ...处理这个新动物园。(当然,它不会影响到旧动物园)。 因此,我有一种方法:创建一个新的动物园,以克隆旧动物园中的每只动物(这意味着创建动物对象)。 因此,它也很慢。

我有另一种方法:为旧动物园的每只动物创建参考,然后复制到新动物园。 因此,新动物园只是提及了动物园的动物。 因此,每次我删除/添加...时,它只会删除对动物对象的引用。 不影响旧动物园,也不创建新对象。

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

谢谢 :)

这在Java中非常简单:

ArrayList<Animal> copy = new ArrayList<Animal>(zoo);

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

只需尝试:

ArrayList<Animal> newZoo = new ArrayList<Animal>(oldZoo);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM