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()執行之后拋出異常
