你须要在你的应用中使用iterator。算法
Solutionthis
尽管使用带有hasNext()和next()方法的iterator是很是通用的遍历Java集合的方法。可是它们在Scala集合中并不常常被使用。由于Java集合有许多像map和foreach的方法让让你能够轻松地实现本身的算法。必须澄清的是,在Scala中我从未直接使用过以下代码:spa
// don't do this val it = collection.iterator while (it.hasNext) ...
话虽如此,一些时候你仍是会用到一个iterator,一个最好的例子就是io.Source.fromFile方法。这个方法返回一个迭代器,这很是好,由于当你在使用很是大的文件的时候,把整个文件读进内存并非一个好的选择。scala
对于iterator,最重要的一点是,当你使用完以后,它就不能用了。你能够使用一个iterator来打印集合中元素,可是你只能用一次,当你再次调用的时候,你会发现,你什么都得不到了。code
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