HashMap在遍歷的過程中修改(remove操作)


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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM