오늘 프로젝트 작업을 하다가 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 중국어 웹사이트에서 관련 기사를 확인하세요!