프로그래머스 문제를 풀다가 ConcurrentModificationException 예외가 발생했다.
이 예외는 list나 ArrayList를 for문에 직접 넣어서 돌다가 remove를 호출하면 발생한다.
for문에서 돌아가는 list가 remove를 호출하면 크기가 줄어들게 되고 size값이 맞지 않기 때문에 발생한다.
예를들면
ArrayList<String> list = new ArrayList<String>();
for(rep : list){
if(rep.equals("sanha")){
list.remove(rep);
System.out.println(rep+ "는 sanha 삭제할게요~")
}
}
해결법.
ArrayList<String> list = new ArrayList<String>();
Iterator<String> iter = list.iterator();
while (iter.hasNext()) {
String s = iter.next();
iter.remove();
}
반복자 (Iterator)를 이용하여 해결한다.
'Programming > Back-end Language' 카테고리의 다른 글
[JAVA] Comparable, Comparator이란? (0) | 2022.05.26 |
---|---|
[JAVA] BufferedReader와 StringTokenizer 사용법 (0) | 2022.05.09 |
[JAVA] 컬렉션 프레임워크란? (List/Set/Map) (2) | 2022.04.28 |
[JAVA] Servlet HTTP 응답 데이터(Response) TEXT/ HTML / JSON (0) | 2022.04.17 |
[Spring] Http API Json 형식 데이터 받고 출력하기 (0) | 2022.04.15 |