用例是一个函数(genLitCodes),它将BuildParams作为参数说pparams。 pparams将多维数据哈希映射为点亮(对于点亮的代码)。 在genLitCodes中我需要迭代所以使用itr.remove()来避免并发修改异常。
但是当控制返回到调用功能并且点亮时再次使用时会出现问题。一旦控制从genLitCodes(..)返回,我看到0映射。 我的代码再次使用相同的灯光,现在无法使用。
任何建议都要避免concurrentmodificationException以及保留对lits的引用 将不胜感激
示例代码在
之下public boolean func(HashMap> plits,....){
HashMap<String, HashMap<String, String>> llits = plits;
//some code
Iterator literator = llits.entrySet().iterator();
while (literator.hasNext()) {
Map.Entry pairs = (Map.Entry) literator.next();
// some code
}
//some code
***literator.remove();///to avoid concurrent modification exception***
//some code
}
答案 0 :(得分:0)
我不完全理解你的问题。基于我的假设我已经说过,在genLitCodes方法中想要迭代代码意味着它只调用了itr.next()
而不是itr.remove
。删除通常用于从hashmap中删除条目。
答案 1 :(得分:0)
使用java.util.concurrent.ConcurrentHashMap