HashMap在遍历的过程中修改(remove操作)

主宰稳场 提交于 2019-11-28 13:52:28

1.如下的方式删除键值对不会抛出异常

 1 Iterator modifyIter = finalResult.entrySet().iterator();
 2         while(modifyIter.hasNext()){
 3             Map.Entry modifyEntry = (Map.Entry)modifyIter.next();
 4             int keyOut =(int) modifyEntry.getKey();
 5             HashMap<Integer,ArrayList<Mac>> value = (HashMap<Integer,ArrayList<Mac>>) modifyEntry.getValue();
 6             Iterator innerIter = value.entrySet().iterator();
 7             while(innerIter.hasNext()){
 8                 Map.Entry innerEntry = (Map.Entry) innerIter.next();
 9                 int keyIn = (int) innerEntry.getKey();
10                 ArrayList<Mac> macList = (ArrayList<Mac>) innerEntry.getValue();
11                 if(macList.size()<groupSize){
12                     innerIter.remove();
13                     
14                 }
15             }
16             if(finalResult.get(keyOut).isEmpty()){
17                 modifyIter.remove();
18             }
19         }

2.否则直接通过finalResult.remove(key)修改hashmap时会在remove()执行之后抛出异常

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!