오늘 프로젝트 작업을 하다가 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 순회 및 삭제
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(); } }
Java에서 List를 반복하고 삭제합니다. 그리고 컬렉션의 요소를 설정하는 방법(권장)은 모두 편집자가 공유한 내용이므로 참고할 수 있기를 바라며, 또한 모두가 PHP에 더 많은 관심을 가져주시길 바랍니다. 중국사이트.
Java의 List 및 Set 컬렉션에서 요소를 반복하고 삭제하는 방법에 대한 더 많은 관련 기사를 보려면 PHP 중국어 웹사이트에 주목하세요!