Я только что прочитал, что исключение одновременной модификации произойдет, если мы добавим, удалим или обновим коллекцию после вызова метода итератора.
Я понимаю, почему добавление и удаление элемента коллекции вызовет исключение параллельной модификации, но почему обновление должно вызывать параллельную модификацию? в конце концов, мы ничего не меняем структурно при обновлении элемента.
например, приведенный ниже код относится к реализации массива
public E set(int index, E element) {
rangeCheck(index);
E oldValue = elementData(index);
elementData[index] = element;
return oldValue;
}
мы не обновляем переменную "modcount", которая фактически используется для проверки параллельных модификаций.
я также пробовал с моим пользовательским кодом:
public static void main(String[] args) {
ArrayList l= new ArrayList();
l.add("string");
l.add(3);
Iterator it=l.iterator();
Object o=it.next();
l.set(0, "element");
l.remove(o);
//l.add(7);
//it.next();
System.out.println(it.next());
System.out.println(l.get(0));
int i;
System.out.println(j+" "+j);
}
это также не вызывает исключение одновременной модификации.
могу я узнать почему?