Ни один из приведенных выше ответов совершенно не касается гвоздя на голове.
Есть веская причина, по которой Iterator
возвращается сюда.Будучи ленивым, он снимает нагрузку с кучи, и строка, представляющая каждую строку, может быть собрана мусором, как только вы закончите с ней.В случае больших файлов это может существенно помочь избежать исключения OutOfMemoryException.
В идеале вы должны работать непосредственно с итератором, а не принудительно устанавливать его в строгий тип коллекции.
Используя grouped
, тогда, как в ответе om-nom-nom:
for (linesSub <- lines grouped 10) {
//do something with linesSub
}
И если вы хотите сохранить счетчик println
, индексируйте индекс:
for ( (linesSub, batchIdx) <- (lines grouped 10).zipWithIndex ) {
println("batch " + batchIdx)
//do something with linesSub
}
Если вам действительно нужно общее количество, вызовите getLines
дважды.Один раз для подсчета, а второй раз для фактической обработки строк.