java - 按值复制 Java 列表

标签 java list copy

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

 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/

相关文章:

java - 使用 RTP 在 JMF 中实现播放器

java - Hibernate 序列 nextVal 已解析但未使用 (Oracle)

sql - T-SQL,制作列表

linux - 在 Unix 上复制所有子目录及其内容的最安全方法是什么?

C++默认复制构造函数

java - 以下哪种方法在子类中是合法的?

java - 自定义位置中的 Log4j 属性

Python 操作 json、列表和字典

python - 如何在 Python 中比较数组中的值 - 找出 2 个值是否相同

copy - iOS9 NSFileManager 请求在 Documents 目录中保存文件的权限