При Stream
более вероятно, что все сгенерированные значения будут храниться в памяти.
scala> val s = Stream.iterate(0)(_ + 1)
s: scala.collection.immutable.Stream[Int] = Stream(0, ?)
scala> s.drop(3).head
res1: Int = 3
scala> s
res2: scala.collection.immutable.Stream[Int] = Stream(0, 1, 2, 3, ?)
Когда вы сохраните ссылку на ваш Stream
, все сгенерированные элементы останутся в памяти. С Iterator
это менее вероятно.
Конечно, это не должно быть причиной того, что библиотека Scala спроектирована так, как она есть ...