В интерфейсе java.util.Iterator нет метода add(), так как это лишь итератор для прохода по элементам коллекции, и его задача заканчивается на чтении элементов. Если вам нужно добавить элементы в коллекцию, используйте соответствующие методы коллекции, такие как add() для списков List или HashSet, или put() для карт Map. Пример использования метода add():
List<String> list = new ArrayList<>();
Iterator<String> it = list.iterator();
while (it.hasNext()) {
String element = it.next();
if (someCondition) {
list.add(newElement); // Ошибка ConcurrentModificationException, вызванная перебором и модификацией внутри оного }
}
list.add(newElement); вызовет ошибку ConcurrentModificationException, так как мы не можем изменять коллекцию во время итерации по ней.
Если вы хотите добавить элементы в коллекцию, в то время как вы перебираете её элементы, используйте ListIterator, который содержит метод add() для этой цели. Вы можете получить ListIterator, вызвав метод listIterator() на списке:
List<String> list = new ArrayList<>();
ListIterator<String> it = list.listIterator();
while (it.hasNext()) {
String element = it.next();
if (someCondition) {
it.add(newElement);
// Добавление элемента в список, вызов не вызовет
ConcurrentModificationException }
}
1606 вопрос-ответ по Java: https://github.com/DEBAGanov/interview_questions
Tелеграмм канал: https://t.me/DEBAGanov
Мое резюме: https://github.com/DEBAGanov