创建HashMaps的ArrayList的副本

时间:2017-04-11 15:49:03

标签: java arraylist

我有一些代码创建了一个HashMaps的ArrayList,然后我需要一个HashMaps的ArrayList副本来执行计算,但我希望原始文件保持不变。

我尝试了各种各样的,从人们的答案来看,这是我现在的代码:

List<Map> counts = new ArrayList<>();

counts列表中填充了HashMaps。

我需要一份副本,但我不希望我在副本上执行的计算会影响原件。

我试过了:

List<Map> copyCounts = new ArrayList<Map>(counts);

但每当我执行更改时,它都会改变原来的

2 个答案:

答案 0 :(得分:1)

那是因为您添加到新数组列表中的所有地图仍然是引用的。您还需要复制各个地图。

答案 1 :(得分:1)

以下是创建深层副本的方法:

List<Map> counts = ...

List<Map> copy = new ArrayList<>();
for(Map m : counts){
  copy.add(new HashMap(m));
}