Java 创建哈希映射的ArrayList的副本

Java 创建哈希映射的ArrayList的副本,java,arraylist,Java,Arraylist,我有一些代码可以创建一个HashMaps的ArrayList,然后我需要一个HashMaps的ArrayList的副本来执行计算,但是我希望原始的保持不变 我尝试过各种方法,从人们的答案来看,这是我目前的代码: List<Map> counts = new ArrayList<>(); 但每当我执行更改时,它都会更改原始的,这是因为您添加到新数组列表中的所有贴图仍然是通过引用进行的。您还需要复制各个贴图。这是因为您要添加到新数组列表中的所有贴图仍然是通过引用添加的。您还

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

我尝试过各种方法,从人们的答案来看,这是我目前的代码:

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

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

,这是因为您添加到新数组列表中的所有贴图仍然是通过引用进行的。您还需要复制各个贴图。

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

以下是如何创建深度副本:

List<Map> counts = ...

List<Map> copy = new ArrayList<>();
for(Map m : counts){
  copy.add(new HashMap(m));
}
列表计数=。。。
列表副本=新建ArrayList();
用于(地图m:计数){
copy.add(新HashMap(m));
}

以下是如何创建深度副本:

List<Map> counts = ...

List<Map> copy = new ArrayList<>();
for(Map m : counts){
  copy.add(new HashMap(m));
}
列表计数=。。。
列表副本=新建ArrayList();
用于(地图m:计数){
copy.add(新HashMap(m));
}

切勿使用克隆。它坏了。你不认为你可以克隆地图吗?你可以使用java-8流进行计算,它不会改变原始列表的状态。永远不要使用克隆。它坏了。你不认为你可以克隆地图吗?你可以使用java-8流进行计算,它不会改变原始列表的状态以供将来参考,使用泛型!你如何使用泛型来处理这个@JacobG。@user3667111如果不知道
Map
的键/值类型,我就不能给出一个例子。这两个都是@JacobG的两倍。@user3667111那么将
Map
替换为
Map
作为将来的参考,使用泛型!对于这个@JacobG,你如何使用泛型。@user3667111如果不知道
Map
的键/值类型,我就不能给出一个例子。这两个函数都是@JacobG的两倍。@user3667111那么它将沿着将
Map
替换为
Map