【发布时间】:2015-07-21 12:16:38
【问题描述】:
我想避免并发修改异常。所以试图制作哈希图的副本。即使这样,它也会在从原始地图中删除元素时引发并发修改。下面是复制的代码,有没有错误?
private HashMap<String, ArrayList<String>> makeCopy(HashMap<String, ArrayList<String>> origMap) {
HashMap<String, ArrayList<String>> copy=new HashMap<String, ArrayList<String>>();
Iterator<String> iterator = origMap.keySet().iterator();
while(iterator.hasNext()) {
String key = iterator.next();
copy.put(key, new ArrayList<String>(origMap.get(key)));
}
return copy;
}
或者在try catch块中捕获后是否有可能处理它?
创建新副本的目的: 实际上 Hashmap 值的一个副本应该发送到另一个具有线程操作的活动(b),而原始副本将在调用另一个活动(b)的活动(A)中被修改,这就是为什么尝试创建哈希副本的原因不同参考的地图。
【问题讨论】:
-
试试
private synchronized HashMap<String, ArrayList<String>> makeCopy
标签: android hashmap concurrentmodification