>Java >java지도 시간 >Java에서 List 및 Set 컬렉션의 요소를 반복하고 삭제하는 방법(권장)

Java에서 List 및 Set 컬렉션의 요소를 반복하고 삭제하는 방법(권장)

高洛峰
高洛峰원래의
2017-01-23 16:52:132194검색

오늘 프로젝트 작업을 하다가 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 예외가 보고됩니다. 그 이유는 컬렉션을 탐색하고 동시에 삭제할 수 없기 때문입니다.

의 올바른 작성 방법은 다음과 같습니다.

1. 목록을 탐색하고 삭제

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. delete 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();
            }
        }

Java에서 List 및 Set 컬렉션의 요소를 반복하고 삭제하는 위의 방법(권장)은 모두 편집기에서 공유하는 내용입니다. 참고로 저는 모든 사람들이 PHP 중국어 웹사이트를 지원하기를 바랍니다.

Java에서 List 및 Set 컬렉션의 요소를 반복하고 삭제하는 더 많은 방법(권장)을 보려면 PHP 중국어 웹사이트에서 관련 기사를 확인하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.