首頁  >  文章  >  Java  >  java中循環遍歷刪除List和Set集合中元素的方法(推薦)

java中循環遍歷刪除List和Set集合中元素的方法(推薦)

高洛峰
高洛峰原創
2017-01-23 16:52:132148瀏覽

今天在做專案時,需要刪除List和Set中的某些元素,當時使用邊遍歷,邊刪除的方法,卻報了以下異常:

ConcurrentModificationException

為了以後不忘記,使用爛筆頭把它記錄如下:

錯誤代碼的寫法,也就是報出上面異常的寫法:

Set<CheckWork> set = this.getUserDao().getAll(qf).get(0).getActionCheckWorks();
for(CheckWork checkWork : set){
  if(checkWork.getState()==1){
    set.remove(checkWork);
  }
}

   

注意:使用上面的寫法就會報上面的ConcurrenModificationException,注意:使用上面的寫法就會報上面的ConcurrenModificationException,是,集合不異常原因是,集合不可以刪除。

正確的寫法如下:

1. 遍歷刪除List

List<CheckWork> list = this.getUserDao().getAll();
Iterator<CheckWork> chk_it = list.iterator();
while(chk_it.hasNext()){
  CheckWork checkWork = chk_it.next();
  if(checkWork.getPlanState()==1){
    chk_it.remove();
  }
}

   

2. 遍歷刪除Set

Set<CheckWork> set = this.getUserDao().getAll().get(0).getActionCheckWorks();
        Iterator<CheckWork> it = set.iterator();
        while(it.hasNext()){
            CheckWork checkWork = it.next();
            if(checkWork.getState()==1){
                it.remove();
            }
        }

 推薦)就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持PHP中文網。

更多java中循環遍歷刪除List和Set集合中元素的方法(推薦)相關文章請關注PHP中文網!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn