<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Sealyu

    --- 博客已遷移至: http://www.sealyu.com/blog

      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
      618 隨筆 :: 87 文章 :: 225 評論 :: 0 Trackbacks
    今日在調試程序時,出現了 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();
            }

    }
       
    posted on 2008-11-03 16:07 seal 閱讀(259) 評論(0)  編輯  收藏 所屬分類: Java基礎
    主站蜘蛛池模板: 国产在线jyzzjyzz免费麻豆| 国产在线精品免费aaa片| 黄色网址免费在线| www.xxxx.com日本免费| 国产午夜无码精品免费看动漫| 99免费在线观看视频| 最近中文字幕免费mv视频8| 四虎影视永久免费观看地址| 日韩一卡2卡3卡4卡新区亚洲 | 亚洲成a人片在线观看久| 国产亚洲美女精品久久久| 久久亚洲国产视频| 丁香婷婷亚洲六月综合色| 国产AV无码专区亚洲AV蜜芽| A毛片毛片看免费| 亚洲人成免费网站| 在线观看永久免费视频网站| 在线亚洲人成电影网站色www | 五月天网站亚洲小说| 国产精品亚洲片在线va| 男人免费视频一区二区在线观看| 国产麻豆成人传媒免费观看| 毛片a级毛片免费观看免下载| 一区国严二区亚洲三区| 亚洲电影一区二区| 亚洲AV综合永久无码精品天堂| 国产特黄特色的大片观看免费视频| 最近2019年免费中文字幕高清| 国产一卡二卡≡卡四卡免费乱码| 亚洲国产精品无码久久SM | 亚洲色偷偷综合亚洲AV伊人蜜桃| 成在线人直播免费视频| 98精品全国免费观看视频| 国产精品久久久久影院免费| 亚洲福利在线观看| 国产精品亚洲综合天堂夜夜| 88av免费观看| 亚洲中文字幕伊人久久无码| 亚洲国产av高清无码| 国产无限免费观看黄网站| 手机在线看永久av片免费|