閱讀384 返回首頁    go 阿裏雲 go 技術社區[雲棲]


出現 java.util.ConcurrentModificationException 時的解決辦法

原文:https://www.cnblogs.com/error404/archive/2011/11/25/2263671.html



for (int i=0; i<list.size(); i++) {  // 隻有在這種方式遍曆集合時,同時對集合增加、刪除才不會影響。

  // list.remove(list.get(i));  

}

在對一個map進行迭代遍曆並刪除一些符合條件的鍵值對的時候,容易出現 

      java.util.ConcurrentModificationException 這個異常。
Exception in thread "main" java.util.ConcurrentModificationException
at java.util.HashMap$HashIterator.nextEntry(HashMap.java:787)
at java.util.HashMap$KeyIterator.next(HashMap.java:823) 

解決辦法如下: 
import java.util.*; 


public class TestMap {
   public TestMap() {
   } 


   public static void main(String[] args) {
     java.util.Map m = new java.util.HashMap();
     m.put("aaa", "lizongbo ");
     m.put("bbb", " lizongbo");
     m.put("ccc", "lizongbo   ");
     m.put("ddd", "   lizongbo");
     m.put("eee", "lizongbo");
     m.put("fff", "lizongbo");
     m.put("ggg", "lizongbo");
     m.put("adads", "lizongbo");
     m.put("dffd", "lizongbo");
     m.put("dcxv", "lizongbo");
     m.put("lizongbo", "lizongbo");
     m.put("ert", "lizongbo");
     m.put("544", "lizongbo ");
     Iterator iterator = m.keySet().iterator(); 
     while (iterator.hasNext()) {
       String sessionId = (String) iterator.next();
       if ("ggg".equals(sessionId) || "lizongbo".equals(sessionId) ||
           "544".equals(sessionId)) {
         iterator.remove();        //這行代碼是關鍵。
         m.remove(sessionId);
       }
     }
     System.out.println(m.get("ggg"));
     System.out.println(m.get("lizongbo"));
     System.out.println(m.get("544"));
   } 





最後更新:2017-04-02 06:52:12

  上一篇:go 天氣預報之抓取、解析、存入MYSQL數據庫模塊實現,不規範(代碼)
  下一篇:go 修正Magento1.6.1.0翻譯上的bug,提供補丁包下載