본문 바로가기
Java

[JAVA] ArrayList remove for loop ( ConcurrentModificationException)

by onejunu 2021. 2. 24.

JAVA 에서 ArrayList 메소드중 remove를 루프문을 돌면서 사용하고 싶은 데 자칫하면 삭제된 인덱스가 꼬여서 

java.util.ConcurrentModificationException 이 발생한다.

 

ArrrayList를 루프문 돌면서 삭제는 Iterator 를 사용하면 깔끔하다.

 

// ArrayList 초기화
ArrayList<Integer> list = new ArrayList<>();

// list에 원소들 추가
list.add(1);
list.add(2);
... 

// iterator 사용
Iterator it = list.iterator();

// 10 보다 작다면 삭제해버린다.
while(it.hasNext()){
    int next = it.next();
    if( next < 10 ){
        it.remove();
    }
}

 

댓글