cerulean

          ConcurrentModificationException

          遍歷集合,批量刪除時,遇到ConcurrentModificationException
          因為操作的集合會在過程中遇到結構性的改變,例如:
          HashMap<String, String> testMap = new HashMap<String, String>();
                  testMap.put(
          "1""a");
                  testMap.put(
          "2""b");
                  testMap.put(
          "3""c");
                  Set
          <Map.Entry<String,String>> enterySet = testMap.entrySet();
                  

                  
          for(Iterator<Map.Entry<String, String>> i = enterySet.iterator(); i.hasNext();){
                      Map.Entry
          <String, String> entry = i.next();
                      
          if(entry.getValue().equalsIgnoreCase("a")){
                          testMap.remove(entry.getKey());
                      }

                  }


          解決方法:不要在集合上刪除,而是在迭代器上刪除:i.remove();

          p.s.還有另外一個可能性是多線程同時操作該集合了,那需要進行同步來避免。

          posted on 2010-06-11 13:57 cerulean 閱讀(379) 評論(0)  編輯  收藏 所屬分類: Java

          導航

          <2010年6月>
          303112345
          6789101112
          13141516171819
          20212223242526
          27282930123
          45678910

          統計

          常用鏈接

          留言簿(3)

          隨筆分類

          隨筆檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 通江县| 通许县| 潍坊市| 巴彦县| 内黄县| 怀来县| 松桃| 津市市| 左权县| 呈贡县| 侯马市| 莆田市| 夏津县| 平乐县| 丹寨县| 四川省| 乐业县| 松溪县| 卓资县| 满洲里市| 衡阳市| 施秉县| 许昌市| 鹿邑县| 宜春市| 河西区| 镇远县| 名山县| 焦作市| 基隆市| 琼海市| 高阳县| 景泰县| 二手房| 卢氏县| 雅安市| 成安县| 桃源县| 三台县| 青神县| 台中县|