반응형
ConcurrentModificationException은 보통 Collections 에서 리스트, 맵 등에서 제거하고 난 후에 발생한다.
예를들어 리스트가 크기가 10이라서
..이상 생략 for (int i=0;i <list.size(); i++){ System.out.println(list[i]); ..이하 생략 |
으로 반복문을 돌릴때
리스트의 i번째를 가져온다.
마지막으로 가면 10번째의 값을 가져와야하는데 그전에 만약 remove를 했다면 list의 길이는 10이 아니게 된다.
그럴 경우에 발생하는 에러이다.
- 해결방법
- for loop에서 역순으로 순회하면서 삭제
Array일 경우에 가능하고 0부터올리는것이 아닌 10부터 내려오는 방법이다.
..이상 생략 for (int i=list.size();i>=0; i--){ System.out.println(list[i]); ..이하 생략 |
- 한번에 removeAll로 삭제
별도의 list 를 만들어서 remove할 대상을 넣어놔둔다.
..이상 생략 ArrayList<String> removeList = new ArrayList<>(); for (int i=0;i <list.size(); i++){ removeList.add(list[i]); } list.removeAll(removeList); ..이하 생략 |
- Iterator 사용
자세한 사용법은 참고 포스팅 참고
참고 포스팅
https://thenicesj.tistory.com/696
반응형
'IT > Java' 카테고리의 다른 글
[ArrayList] 조건 삭제를 위한 removeIf (15) | 2024.08.02 |
---|---|
[Error] incompatible types / Type mismatch (13) | 2024.08.01 |
HashMap 정렬(Key/Value) (22) | 2024.07.29 |
Collections 함수에 대해 (19) | 2024.07.28 |
String / StringBuffer,StringBuilder 차이 (14) | 2024.07.25 |
댓글