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 閱讀(381) 評論(0)  編輯  收藏 所屬分類: Java

          導航

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

          統計

          常用鏈接

          留言簿(3)

          隨筆分類

          隨筆檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 鹤庆县| 博客| 瑞丽市| 扎鲁特旗| 安仁县| 贵州省| 四平市| 兴义市| 岐山县| 龙里县| 龙胜| 保定市| 肃宁县| 公主岭市| 洪江市| 上犹县| 奈曼旗| 咸阳市| 博罗县| 南康市| 高雄县| 芦山县| 十堰市| 榆社县| 小金县| 白沙| 金坛市| 安康市| 福州市| 潜江市| 怀柔区| 镇赉县| 潍坊市| 固始县| 玛沁县| 乌兰察布市| 大化| 通榆县| 张家口市| 大同市| 河间市|