Если все, что вы делаете, - это простая однопроходная итерация (т.е. только hasNext() и next(), без remove()), гарантирована ли вам линейная производительность и / или амортизированная постоянная стоимость за операцию?
Это указано где-нибудь в Iterator контракте?
Существуют ли структуры данных / Java Collection, которые нельзя повторять за линейное время?
java.util.Scanner implements Iterator<String>. Scanner вряд ли является структурой данных (например, remove() не имеет абсолютно никакого смысла). Считается ли это ошибкой дизайна?
Считается ли что-то вроде PrimeGenerator implements Iterator<Integer> плохим дизайном или Iterator именно для этого? (hasNext() всегда возвращает истину, next() вычисляет следующее число по запросу, remove() не имеет смысла).
Точно ли это имело бы смысл для java.util.Random implements Iterator<Double>?
Должен ли тип действительно реализовывать Iterator, если он эффективно использует только одну треть своего API? (т.е. нет remove(), всегда hasNext())