我有一些代码创建了一个HashMaps的ArrayList,然后我需要一个HashMaps的ArrayList副本来执行计算,但我希望原始文件保持不变。
我尝试了各种各样的,从人们的答案来看,这是我现在的代码:
List<Map> counts = new ArrayList<>();
counts
列表中填充了HashMaps。
我需要一份副本,但我不希望我在副本上执行的计算会影响原件。
我试过了:
List<Map> copyCounts = new ArrayList<Map>(counts);
但每当我执行更改时,它都会改变原来的
答案 0 :(得分:1)
那是因为您添加到新数组列表中的所有地图仍然是引用的。您还需要复制各个地图。
答案 1 :(得分:1)
以下是创建深层副本的方法:
List<Map> counts = ...
List<Map> copy = new ArrayList<>();
for(Map m : counts){
copy.add(new HashMap(m));
}