posts - 43,comments - 75,trackbacks - 0

          今天在寫程序時(shí)遇到了 java.util.ConcurrentModificationException? 異常,
          參考網(wǎng)上程序后,解決了問題,至少現(xiàn)在沒有這個(gè)異常了。
          主要是在刪除iterator元素時(shí)使用了原來的hashmap名稱,改成直接使用iterator的remove方法就可以了。
          參考如下:

          來自:http://java.mblogger.cn/zzjie/posts/16422.aspx

          在Map或者Collection的時(shí)候,不要用它們的API直接修改集合的內(nèi)容,如果要修改可以用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);
          ??????????? }
          ??????? }
          ?? }

          如上寫會(huì)在運(yùn)行期報(bào)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);
          ??????? }
          ??? }

          具體可以參考:http://gceclub.sun.com.cn/yuanchuang/week-14/iterator.html

          posted on 2006-06-07 18:11 夢源 閱讀(952) 評論(0)  編輯  收藏

          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 茌平县| 梓潼县| 当雄县| 武强县| 瓦房店市| 敦化市| 新和县| 明星| 永胜县| 大厂| 乌兰察布市| 伊春市| 资兴市| 汶川县| 大荔县| 郓城县| 宁明县| 太康县| 衡东县| 宿松县| 石家庄市| 双江| 安龙县| 普陀区| 台北市| 双桥区| 柳河县| 榆林市| 黄骅市| 绿春县| 牡丹江市| 灵丘县| 汝州市| 玉溪市| 班玛县| 鸡西市| 蒙城县| 鹤山市| 平乐县| 彰化县| 彰武县|