1

例如,我有一个 ArrayList:

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

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

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

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

谢谢 :)

4

2 回答 2

6

这在 Java 中非常简单:

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

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

于 2012-04-12T13:17:01.767 回答
5

只需尝试:

ArrayList<Animal> newZoo = new ArrayList<Animal>(oldZoo);
于 2012-04-12T13:17:01.893 回答