【发布时间】:2016-05-18 15:26:43
【问题描述】:
我有一个包含自定义对象的 ArrayList。
制作具有完全相同内容但不使用相同引用的单独 ArrayList 的最佳方法是什么?例如,如果我编辑 list1 中的第一个对象,它不会触及 list2 中的第一个对象,否则它们看起来完全一样。
执行以下操作是否被认为是正确/良好的做法,还是有内置的方法?
List<MyObject> firstList = getArrayListFromSQLiteDb(criteria);
List<MyObject> secondList = new ArrayList<>();
for (MyObject object : firstList) {
MyObject newObject = new MyObject();
newObject.setField1(object.getField1());
newObject.setField2(object.getField2());
newObject.setField3(object.getField3());
secondList.add(newObject);
}
【问题讨论】:
-
看起来你正在做的很好。不过要小心;如果任何字段是引用,它们将被复制,听起来这不是你想要的。
-
List
firstList = getArrayListFromSQLiteDb(criteria);和 List secondList = new ArrayList (firstList); -
@ManuAG 如果 onky 他们会阅读documentation...
-
@Manu & DjMethaneMan:如果你读了这个问题,你就会明白提问者不只是想要一个列表的副本,他想要一个也复制所有包含对象的深层副本(这样两个列表中都有不同的对象)。 ArrayList 的复制构造函数和 clone() 函数都没有这样做。
标签: java object arraylist copy