Problem
你需要在你的应用中使用iterator。
Solution
尽管使用带有hasNext()和next()方法的iterator是非常通用的遍历Java集合的方法。但是它们在Scala集合中并不经常被使用。因为Java集合有许多像map和foreach的方法让让你可以轻松地实现自己的算法。必须澄清的是,在Scala中我从未直接使用过如下代码:
// don't do this
val it = collection.iterator
while (it.hasNext) ...
话虽如此,一些时候你还是会用到一个iterator,一个最好的例子就是io.Source.fromFile方法。这个方法返回一个迭代器,这非常好,因为当你在使用非常大的文件的时候,把整个文件读进内存并不是一个好的选择。
对于iterator,最重要的一点是,当你使用完之后,它就不能用了。你可以使用一个iterator来打印集合中元素,但是你只能用一次,当你再次调用的时候,你会发现,你什么都得不到了。
scala> val it = Iterator(1,2,3)
it: Iterator[Int] = non-empty iterator
scala> it.foreach(println)
1
2
3
scala> it.foreach(println)
一个iterator不是一个集合;他只是给你一种一个接一个地访问集合元素的方法。但是一个iterator定义了许多集合中才有的方法,包括foreach, map, flatMap, collect等。你也可以吧一个iterator转换称为一个集合。
scala> val it = Iterator(1,2,3)
it: Iterator[Int] = non-empty iterator
scala> it.toArray
res11: Array[Int] = Array(1, 2, 3)
scala> it.to
to toArray toBuffer toIndexedSeq toIterable toIterator toList
toMap toSeq toSet toStream toString toTraversable toVector
来源:oschina
链接:https://my.oschina.net/u/2633112/blog/657387