Бывают ли такие случаи, когда нужно прописывать и работать напрямую с итератором а не в foreach
?
Согласен с Sergey Gornostaev, и в дополнении к прошлому посту: кроме модификации элементов коллекции, с помощью итератора можно "проходить" по всем элементам как прямом направлении, через методы:
MyIterator.hasNext(); //проверка наличия следующего элемента
MyIterator.next(); //обращение с следующему элементу
так и в обратном направлении (если после прохождения итератор указывает на конец коллекции)
MyIterator.hasPrevious(); //проверка наличия "предыдущего" элемента
MyIterator.previous(); //обращение к "предыдущему" элементу
В то время, как цикл типа foreach способен "проходить" только в прямом направлении.
Если вам нужно заменять или удалять элементы итерируемой коллекции.
Я только хотел добавить, что не только List
'ом одним может быть реализован Iterable
представьте себе допустим QuadTree
, движение по List
вперед да и назад вполне тривиально знай да меняй себе индекс, по дереву-же гулять "снаружи", не зная деталей вполне с таки сложно, однако, если реализован интерфейс Iterable
, чтобы перейти к следующему узлу Вам нужно только лишь дернуть .next()
итератора, а как итератор получит этот узел, дело разработчиков класса-итератора, а не управляющего кода. По-моему так (С) Винни-пух
Перевод документов на английский язык: Важность и ключевые аспекты
Какие существуют виды рекламных бордов и как выбрать подходящий?
В одном и том же файле делают медиа запрос для:
Здравствуйте! Помогите, пожалуйста, разобраться с индексацией массива arr в следующем примере (учебное упражнение, реализующее рулетку):
кто может подсказать? Есть два скрипта в одно из них touch swipe не работает но работает управление по Click, когда пытаюсь подключить сторонний скрипт...