리스트를 순회하면서 조건이 맞으면 요소를 삭제하는 코드를 짰는데
요소를 삭제하는 순간
ConcurrentModificationException
Exception이 발생하였다.
검색을 해보니 컬렉션 객체에서 반복문을 통해 순회하면서
요소를 삭제할 경우, Index가 변경되어 일부 요소는 순회하지 않을 수도 있기 때문에 컬렉션 객체에서 Exception을 던지는 것이었다.
해결 방안은 여러가지가 있었지만 필자는 removeAll()을 사용하는 방법을 사용했다.
val removed = mutableListOf<Int>() // 임시 리스트
list.forEach { element ->
if(~~) {
removed.add(element)
}
}
// 순회가 끝난 뒤 removeAll()을 통해 임시 리스트의 요소들 삭제
list.removeAll(removed)