Когда используется iterator не в цикле foreach?

118
06 декабря 2019, 12:10

Бывают ли такие случаи, когда нужно прописывать и работать напрямую с итератором а не в foreach?

Answer 1

Согласен с Sergey Gornostaev, и в дополнении к прошлому посту: кроме модификации элементов коллекции, с помощью итератора можно "проходить" по всем элементам как прямом направлении, через методы:

MyIterator.hasNext(); //проверка наличия следующего элемента
MyIterator.next(); //обращение с следующему элементу

так и в обратном направлении (если после прохождения итератор указывает на конец коллекции)

MyIterator.hasPrevious(); //проверка наличия "предыдущего" элемента
MyIterator.previous(); //обращение к "предыдущему" элементу

В то время, как цикл типа foreach способен "проходить" только в прямом направлении.

Answer 2

Если вам нужно заменять или удалять элементы итерируемой коллекции.

Answer 3

Я только хотел добавить, что не только List'ом одним может быть реализован Iterable представьте себе допустим QuadTree, движение по List вперед да и назад вполне тривиально знай да меняй себе индекс, по дереву-же гулять "снаружи", не зная деталей вполне с таки сложно, однако, если реализован интерфейс Iterable, чтобы перейти к следующему узлу Вам нужно только лишь дернуть .next() итератора, а как итератор получит этот узел, дело разработчиков класса-итератора, а не управляющего кода. По-моему так (С) Винни-пух

READ ALSO
В файле медиа запросов не работает адаптация для смартфона

В файле медиа запросов не работает адаптация для смартфона

В одном и том же файле делают медиа запрос для:

142
Помогите разобраться с индексацией массива в javascript

Помогите разобраться с индексацией массива в javascript

Здравствуйте! Помогите, пожалуйста, разобраться с индексацией массива arr в следующем примере (учебное упражнение, реализующее рулетку):

138
Динамически отслеживаемые props

Динамически отслеживаемые props

Предположим, есть нечто такое:

134
Вопрос по jquery

Вопрос по jquery

кто может подсказать? Есть два скрипта в одно из них touch swipe не работает но работает управление по Click, когда пытаюсь подключить сторонний скрипт...

106