posts - 297,  comments - 1618,  trackbacks - 0
          ??? 今日在調試程序時,出現了?java.util.ConcurrentModificationException,出錯代碼如下:

          for(Iterator?ite?=?candidateObjDtoList.iterator();?ite.hasNext();?)?{
          ???????CandidateObjDto?dto?
          =?(CandidateObjDto)ite.next();
          ???????
          if(dto.getType()?==?Constants.CANDIDATE_OBJ_TYPE_SET)?{
          ????????????????dto.setVoteType(Constants.VOTE_TYPE_ABSTAIN);
          ???????}
          ?else?{
          ???????????????candidateObjDtoList.remove(dto);????????
          ??????}

          }
          ????? 在網上搜索到資料如下:
          在Map或者Collection的時候,不要用它們的API直接修改集合的內容,如果要修改可以用Iterator的remove()方法,例如:
          ????
          public?void?setReparation(?Reparation?reparation?)?{
          ????????
          for?(Iterator?it?=?this.reparations.iterator();it.hasNext();){????//reparations為Collection
          ????????????Reparation?repa?=?(Reparation)it.next();
          ????????????
          if?(repa.getId()?==?reparation.getId()){
          ????????????????
          this.reparations.remove(repa);
          ????????????????
          this.reparations.add(reparation);
          ????????????}

          ????????}

          ???}


          如上寫會在運行期報ConcurrentModificationException,可以如下修改:

          ????
          public?void?setReparation(?Reparation?reparation?)?{
          ????????
          boolean?flag?=?false;
          ????????
          for?(Iterator?it?=?this.reparations.iterator();it.hasNext();){????//reparations為Collection
          ????????????Reparation?repa?=?(Reparation)it.next();
          ????????????
          if?(repa.getId()?==?reparation.getId()){
          ????????????????it.remove();
          ????????????????flag?
          =?true;
          ????????????????
          break;
          ????????????}

          ????????}

          ????????
          if(flag){
          ??????????
          this.reparations.add(reparation);
          ????????}

          ????}

          ???? 成功解決了所遇問題,成功后的代碼如下:
          ?
          for(Iterator?ite?=?candidateObjDtoList.iterator();?ite.hasNext();?)?{
          ????????CandidateObjDto?dto?
          =?(CandidateObjDto)ite.next();
          ????????
          if(dto.getType()?==?Constants.CANDIDATE_OBJ_TYPE_SET)?{
          ????????????????dto.setVoteType(Constants.VOTE_TYPE_ABSTAIN);
          //對該候選項投棄權票
          ????????}
          ?else?{
          ?????????????????ite.remove();
          ????????}

          }
          ????
          ???????????????????????????????????????????????????????????????????????????????????????????????? 阿蜜果發表于 2007年01月26日 10:51:00
          ??????????????????????????????????????????????????????????? 地址:http://blog.csdn.net/amigoxie/archive/2007/01/26/1494401.aspx
          posted on 2007-02-11 23:40 阿蜜果 閱讀(8959) 評論(9)  編輯  收藏 所屬分類: Java


          FeedBack:
          # re: java.util.ConcurrentModificationException
          2007-02-12 09:11 | abba
          建議使用
          java.util.concurrent.ConcurrentHashMap
          就不會出現你的這個錯誤了.
            回復  更多評論
            
          # re: java.util.ConcurrentModificationException
          2007-02-12 09:29 | 阿蜜果
          謝謝指點,嘿嘿  回復  更多評論
            
          # re: java.util.ConcurrentModificationException
          2007-02-12 14:13 | itVincent
          非常巧,今天我也碰到這個異常了,原因是多線程訪問HashMap造成的,換成Hashtable解決,看來拋出這個java.util.ConcurrentModificationException 的情況還比較多  回復  更多評論
            
          # re: java.util.ConcurrentModificationException
          2007-02-12 14:23 | 山風小子
          阿蜜果,你打算趕超‘江南白衣’嗎?嘻嘻~~~
          連著發那么多文章,小弟滿載而歸,多謝啦 :)  回復  更多評論
            
          # re: java.util.ConcurrentModificationException
          2007-02-12 15:05 | 阿蜜果
          打算不起,呵呵  回復  更多評論
            
          # re: java.util.ConcurrentModificationException
          2007-02-12 19:18 | 山風小子
          有志者,事竟成嘛 :)
            回復  更多評論
            
          # re: java.util.ConcurrentModificationException
          2008-07-17 16:38 | fykenny
          好東西,,,

          我有遇到這樣的異常...

          謝謝你的文章

          寫得很好啊...希望可以一起合作啊哈   回復  更多評論
            
          # re: java.util.ConcurrentModificationException
          2008-07-17 16:42 | fykenny
          我怎么總是登陸不了,,

          用戶名fykenny是正確的啊

          有時候又行的  回復  更多評論
            
          # re: java.util.ConcurrentModificationException
          2008-07-17 16:44 | fykenny
          好  回復  更多評論
            
          <2007年2月>
          28293031123
          45678910
          11121314151617
          18192021222324
          25262728123
          45678910

                生活將我們磨圓,是為了讓我們滾得更遠——“圓”來如此。
                我的作品:
                玩轉Axure RP  (2015年12月出版)
                

                Power Designer系統分析與建模實戰  (2015年7月出版)
                
               Struts2+Hibernate3+Spring2   (2010年5月出版)
               

          留言簿(263)

          隨筆分類

          隨筆檔案

          文章分類

          相冊

          關注blog

          積分與排名

          • 積分 - 2295917
          • 排名 - 3

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 桂阳县| 仁寿县| 红桥区| 越西县| 鹤岗市| 滕州市| 南昌县| 龙胜| 三江| 洛川县| 柳河县| 木里| 抚顺市| 中宁县| 句容市| 弥渡县| 南宫市| 宁津县| 屏山县| 金川县| 仪陇县| 江口县| 北碚区| 五华县| 龙里县| 茶陵县| 阳信县| 石城县| 井陉县| 峨眉山市| 上犹县| 武乡县| 沙田区| 盐津县| 同江市| 义乌市| 平南县| 石狮市| 两当县| 乳山市| 凤城市|