List 요소 삭제 하기(ConcurrentModificationException)

choijh·2023년 1월 21일

Java+Jsp

목록 보기
12/12

ConcurrentModificationException

  • 컬렉션 객체에 엘리먼트가 추가, 제거될 때 for문 안에서 요소를 수정하기 때문에 Index가 변경되어 일부 요소는 순회되지 않을 수 있다.

해결 : for문 안에서 삭제하지 않고 삭제할 요소를 임시 리스트에 넣어두고, for문 밖에서 삭제해준다.

ArrayList<HashMap<String, Object>> removed = new ArrayList<>(); // 삭제할 요소의 임시 리스트

for(HashMap<String, Object> m : list) {
  if((int)m.get("no") == no) {
  	removed.add(m);	
  }					
}

list.removeAll(removed);

0개의 댓글