toIterator
определяется в TraversableLike
как
def toIterator: Iterator[A] = toStream.iterator
, поэтому он создает Stream
в фоновом режиме, который сохраняет все элементы в памяти во время итерации.
( Редактировать : Я думаю, что структура потока здесь не является проблемой на самом деле. Однако, toStream
сам вызывает toBuffer
, который, в свою очередь, копирует каждое отдельное значение.)
iterator
, с другой стороны, определен в IndexedSeqLike
, в котором используется специализированная структура, не сохраняющая никаких элементов в памяти.