在Java中按值复制对象列表

Dvo*_*ora 7 java collections

我有一个类,它的构造函数中包含一个对象列表,List<Object>.每次列表可以由不同类型的元素组成.这是通用的,我不知道他们的类类型是什么.

在让用户更改其值之前,我想保存自己的列表副本.但由于副本是通过引用完成的,因此两个列表(原始和副本)都在更改...

如何按值复制列表?

谢谢,Devora

dog*_*ane 1

您需要创建一个新列表List,然后将原始列表中每个元素的克隆添加到其中。

List<Object> copy = new ArrayList<Object>(inputList.size());
for (Object item : inputList) {
   copy.add(item.clone());
}
Run Code Online (Sandbox Code Playgroud)

显然,您需要检查列表中的对象是否正确,Cloneable否则它们将无法正确复制。