1、簡述
在Scala中,迭代器(Iterator)不是一個集合,是構建了一種訪問集合的方法。當構建一個集合需要很大的開銷時(比如把文件得所有行都讀取到內存),迭代器就發揮了很好的作用。
迭代器有兩個操作,next 和hasNext。next返回迭代器的下一個元素,hasNext用於檢查是否還有下一個元素。
通常需要用while和for循環遍歷迭代器。
2、while循環
scala> val iter = Iterator("Hadoop","Spark","Scala") iter: Iterator[String] = non-empty iterator scala> while (iter.hasNext) { | println(iter.next()) | } Hadoop Spark Scala
提示:上述執行操作結束后,迭代器會移動至末尾,就不能再用了,如果繼續執行一次print(iter.next())就會報錯。
另外,上述代碼中,使用iter.next 和 iter.next() 都是一樣的,但是iter.hasNext 就不能加括號。
3、for 循環
scala> val iter = Iterator("Hadoop","Spark","Scala") iter: Iterator[String] = non-empty iterator scala> for (elem <- iter) { | println(elem) | } Hadoop Spark Scala