我搜索了论坛以处理集合的深层复制,但在我手中,Collections.copy(dest,src)没有按预期工作。我错过了什么吗?
List<Column> mergedStudies = new ArrayList<Column>(Arrays.asList(new Column[studyColumns.size()]));
Collections.copy(mergedStudies, studyColumns);
for (Iterator itrStudyRecColumns = mergedStudies.iterator(); itrStudyRecColumns.hasNext();) {
Column studyRecCol = (Column) itrStudyRecColumns.next();
for (Iterator itrStudyValColumns = studyValueColumns.iterator(); itrStudyValColumns.hasNext();) {
Column studyValCol = (Column) itrStudyValColumns.next();
if (studyRecCol.getColumnName().equals(studyValCol.getColumnName())) {
// Note: this method dereferences copies to an existing destination collection WITH items appended to end of collection.
CellValue[] cellValArray = studyValCol.getCellValues().toArray(new CellValue[studyValCol.getCellValues().size()]);
studyRecCol.getCellValues().addAll(new ArrayList<CellValue>(Arrays.asList(cellValArray)));
break;
}
}
}
谢谢,
克里斯
答案 0 :(得分:1)
Collections.copy()
没有(也没有声称)执行深层复制:
将一个列表中的所有元素复制到另一个列表中。在操作之后,目标列表中每个复制元素的索引将与源列表中的索引相同。目标列表必须至少与源列表一样长。如果它更长,则目标列表中的其余元素不受影响。
它只是做一个浅拷贝(导致每个列表中复制的引用到同一组对象)。