2015-03-01 5 views
1

У меня есть программа, которая проходит через HashMap с помощью Iterator, и внутри цикла я добавляю к HashMap, что вызывает исключение ConcurrentModificationException. Я видел, что ListIterator имеет функцию add(), которая обрабатывает это, но Iterator этого не делает.Добавление элементов в HashMap во время цикла с помощью Iterator

Метод HashMap устанавливается, как это -

HashMap<Pair<Integer, Integer>, Object> 

И итератор, как это -

Iterator<Entry<Pair<Integer, Integer>, Object>> iter; 

С объекта (не настоящее имя) есть класс из моей программы. Кто-нибудь знает, как я могу добавить к итератору, пока я зацикливаюсь или какие-либо другие варианты?

+0

Почему вы не добавляете объекты в список и не добавляете их на карту после завершения итерации? –

ответ

3

Вместо этого скопируйте копию карты и добавьте исходную карту. Набор записей карты представляет собой пару ключевых значений карты и не поддерживает добавление, хотя вы можете удалить элементы.

В качестве альтернативы вы можете добавлять элементы к новой карте во время итерации, а затем использовать putAll() после ... подумать об этом, что, вероятно, более эффективно.

+0

Пошел со вторым предложением, и это сработало. Благодаря! –

 Смежные вопросы

  • Нет связанных вопросов^_^