참고 : Iterator#remove()
방법을 알고 있습니다.
왜 '다음 코드 샘플에서는 이해가 안 List.remove
의 main
방법은 발생 ConcurrentModificationException
하지만, 하지 에 remove
방법.
public class RemoveListElementDemo {
private static final List<Integer> integerList;
static {
integerList = new ArrayList<Integer>();
integerList.add(1);
integerList.add(2);
integerList.add(3);
}
public static void remove(Integer toRemove) {
for(Integer integer : integerList) {
if(integer.equals(toRemove)) {
integerList.remove(integer);
}
}
}
public static void main(String... args) {
remove(Integer.valueOf(2));
Integer toRemove = Integer.valueOf(3);
for(Integer integer : integerList) {
if(integer.equals(toRemove)) {
integerList.remove(integer);
}
}
}
}
ConcurrentModificationException
다른 하나는 그렇지 않습니다.
return;
루프 에를 추가하여 간단히 고쳤습니다.
Iterator#remove()
입니다. 왜 이런 식으로하고 있습니까?