我已经看到了这个问题的答案,但它没有复制值。
List<SomeBean> newList = new ArrayList<SomeBean>(otherList);
我需要有两个单独的列表,因为我想修改新列表中的元素并将它们与原始列表进行比较。如果我这样做,编辑 newList 中的对象也会修改 otherList 中的对象。
这是如何在java中完成的?
最佳答案
深度复制(更改其中一项,另一项不更改)
此代码将创建一个新列表,然后从旧列表中创建每个对象的克隆并将其添加到新列表中。
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);
这会使新列表的大小与另一个列表的大小相同,然后复制这些值。
关于java - 按值复制 Java 列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36090358/