Map<String, Map<Long, String>> regions = Service.getWhseByRegions();
for(String region:regions.keySet()){
warehouseList=getAuthorizedWarehouse(dashboardWarhs,regions.get(region));
if(warehouseList!=null && warehouseList.size()>0){
regions.put(region, warehouseList);
}else{
regions.remove(region);
}
}
嗨,我收到ConcurrentModificationException
,请帮忙
答案 0 :(得分:1)
你得到ConcurrentModificationException
,因为你在迭代收集时删除了元素。使用Java 8的removeIf()
方法或安全Iterator#remove()
进行删除。
答案 1 :(得分:0)
您正在迭代Map并尝试修改相同的Map。而是使用临时的重复Map进行循环内的操作,然后分配回循环外的原始Map。
答案 2 :(得分:0)
这是一个经典错误:-) 你应该考虑两件事
第一个: 存储所有已识别的项目,这些项目应在不同的集合中删除,而不是删除 迭代要删除的项目,并为每个项目调用删除
第二个: 尝试防止并发访问。 很可能你可以添加一些同步到你的方法或同步(lockObjektForWhse){...}