РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
288 of 723 menu

Класс Iterator

Класс Iterator представляет собой интерфейс для последовательного перебора элементов коллекции. Он лежит в основе работы циклов for-in и всех итерируемых объектов Iterable. Итератор хранит указатель на текущий элемент и умеет перемещаться к следующему. Свойство current возвращает текущий элемент, а метод moveNext сдвигает указатель к следующему элементу и возвращает true, если перемещение удалось, или false, если элементы закончились.

Класс Iterator является абстрактным: напрямую создать его экземпляр нельзя, но можно реализовать собственный итератор или получить готовый через свойство iterator любого объекта Iterable.

Синтаксис

abstract class Iterator<E> { E get current; bool moveNext(); }

Пример

Давайте получим итератор списка и вручную переберём все его элементы с помощью метода moveNext:

void main() { List<String> list = ['a', 'b', 'c', 'd', 'e']; Iterator<String> it = list.iterator; while (it.moveNext()) { print(it.current); } }

Результат выполнения кода:

"a" "b" "c" "d" "e"

Пример

Давайте посмотрим, что возвращает метод moveNext, когда элементы коллекции закончились:

void main() { List<int> list = [1, 2, 3]; Iterator<int> it = list.iterator; print(it.moveNext()); print(it.current); print(it.moveNext()); print(it.current); print(it.moveNext()); print(it.current); print(it.moveNext()); }

Результат выполнения кода:

true 1 true 2 true 3 false

Пример

Давайте реализуем собственный итератор, который перебирает элементы списка в обратном порядке:

class ReverseIterator<E> implements Iterator<E> { final List<E> _list; int _index; ReverseIterator(this._list) : _index = _list.length; @override E get current => _list[_index]; @override bool moveNext() { if (_index > 0) { _index--; return true; } return false; } } void main() { ReverseIterator<String> it = ReverseIterator(['a', 'b', 'c', 'd', 'e']); while (it.moveNext()) { print(it.current); } }

Результат выполнения кода:

"e" "d" "c" "b" "a"

Смотрите также

  • класс Iterable,
    который предоставляет итератор
  • свойство iterator,
    которое возвращает итератор коллекции
  • метод moveNext,
    который сдвигает указатель к следующему элементу
  • свойство current,
    которое возвращает текущий элемент
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить