复制Java List BY VALUE

时间:2016-03-18 17:09:46

标签: java list copy

我已经看到了这个问题的答案,但它没有复制值。

 List<SomeBean> newList = new ArrayList<SomeBean>(otherList);

我需要有两个单独的列表,因为我想修改新列表中的元素并将它们与原始列表进行比较。如果我这样做,在newList中编辑对象也会在otherList中修改它们。

这是如何在java中完成的?

1 个答案:

答案 0 :(得分:1)

深层复制(在一个中更改项目,在另一个中没有更改)

此代码将创建一个新列表,然后从旧列表中创建每个对象的克隆并将其添加到新列表中。

List<SomeBean> newList = new ArrayList<SomeBean>(otherList.size());
for(SomeBean item : otherList) {
    newList.add(item.clone());
}    

浅拷贝(改变一项,另一项改变)

您发布的示例应该工作,但如果没有,还有另一种方法:

List<SomeBean> newList = new ArrayList<SomeBean>(otherList.size());
Collections.copy(newList, otherList);

这会使新列表与另一个列表的大小相同,然后复制值。