Создание нового объекта итератора каждый раз, когда я пересекаю список - PullRequest
4 голосов
/ 06 августа 2011

Если я создаю объект Iterator в каком-либо списке, нужно ли создавать новый объект итератора каждый раз, когда я пересекаю список?Или новые элементы, добавленные или удаленные из списка, автоматически учитываются ранее созданным итератором?

1 Ответ

8 голосов
/ 06 августа 2011

Iterator - утилита одноразового использования. Как правило, вам нужен новый каждый раз, когда вы просматриваете список. Тем не менее, это не плохо; Iterator s имеют очень небольшое состояние (для ArrayList это может быть просто int для хранения текущего индекса).

Если список поддержки изменяется между вызовами итератора, вы получите ConcurrentModificationException от операции итератора. Добавление или удаление элементов должно производиться с использованием самого Iterator.

...