Добавление элементов в HashMap во время цикла с помощью Iterator
У меня есть программа, которая проходит через HashMap, используя Iterator, и внутри цикла я добавляю в HashMap, что вызывает исключение ConcurrentModificationException. Я видел, что ListIterator имеет функцию add(), которая обрабатывает это, а Iterator - нет.
HashMap настроен так:
HashMap<Pair<Integer, Integer>, Object>
И такой итератор -
Iterator<Entry<Pair<Integer, Integer>, Object>> iter;
Объект (не настоящее имя) является классом из моей программы. Кто-нибудь знает, как я могу добавить к итератору, пока я зацикливаюсь или какие-либо другие варианты?
1 ответ
Вместо этого переберите копию карты и добавьте к исходной карте. Набор записей карты является представлением пар ключ-значение карты и не поддерживает сложение, хотя вы можете удалять элементы.
В качестве альтернативы вы можете добавить элементы на новую карту во время итерации, а затем использовать putAll()
потом... если подумать, это, вероятно, более эффективно.