Почему я не получаю исключение java.util.ConcurrentModificationException в этом примере?

Примечание. Мне известно об 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);
            }
        }
    }
}
173
задан Tunaki 29 September 2016 в 20:12
поделиться