Это полностью зависит от объекта, связанного с Iterator
. Помните, что (почти) каждый Iterator
связан с Iterable
, который мы повторяем.
Каждый класс Iterable
может определять собственный класс Iterator
, который по запросу возвращает элемент next()
.
Как это делает так, что данные доступны мгновенно:
- Он может извлекать каждый элемент из файла, из базы данных, из библиотеки или чего-либо еще.
- Может извлекать каждый элемент из объекта, который уже находится в памяти.
- и т. Д.
В случае 1, вероятно, было бы бесполезно хранить все в памяти, но в случае 2, где у нас уже есть все в памяти, мы могли бы (и будем) действительно запрашивать этот объект о пункт на следующей позиции.