# 1: Необязательно означает, что вы можете реализовать его или бросить UnsupportedOperationException
# 2: эта операция необязательна, потому что иногда вы просто не хотите, чтобы содержимое вашего итератора изменялось. Или что вы понимаете под "надежностью работы"?
РЕДАКТИРОВАТЬ # 4: behavior of an iterator is unspecified if the underlying collection is modified
Обычно вы используете итератор, выполняя
List<String> c = new ArrayList<String>();
c.add("Item 1");
c.add("Item 2");
c.add("Item 3");
...
for (Iterator<String> i = c.iterator(); i.hasNext();)
{
String s = i.next();
...
}
Если вы сейчас хотите удалить элемент при выполнении итерации по списку, и вы бы позвонили
c.remove("Item 2");
это не чисто , возможно искажает данные в вашем Списке / Коллекции / ... и его следует избегать . Вместо этого удалите () элемент через итератор :
i.remove();