view
создает ленивую коллекцию / поток.Его главная прелесть в том, что он не будет пытаться собрать всю коллекцию.Это может предотвратить OutOfMemoryError или повысить производительность, когда вам нужны только первые несколько элементов в коллекции.iterator
не дает такой гарантии.
Еще одна вещь.По крайней мере, на Range
, view
возвращает SeqView
, который является подтипом Seq
, так что вы можете вернуться назад или начать заново с самого начала и делать все эти забавные последовательности.
Полагаю, что разница между итератором и представлением - это вопрос спереди и сзади.Ожидается, что итераторы выпустят увиденное.Как только next
был вызван, предыдущий, надеюсь, отпущен.Взгляды - это обратное.Они обещают не приобретать то, что не было запрошено.Если у вас есть представление всех простых чисел, бесконечное множество, оно получило только те простые числа, которые вы просили.Если вы хотели 100-е, 101 не должен занимать память.