Scala 集合 - 迭代器


迭代器不是集合,而是一种逐个访问集合元素的方法。迭代器的两个基本操作是nexthasNext对it.next()的调用将返回迭代器的下一个元素并推进迭代器的状态。您可以使用 Iterator 的it.hasNext方法了解是否有更多元素要返回。

“单步执行”迭代器返回的所有元素的最直接方法是使用 while 循环。让我们按照以下示例程序进行操作。

例子

object Demo {
   def main(args: Array[String]) {
      val it = Iterator("a", "number", "of", "words")
      while (it.hasNext){
         println(it.next())
      }
   }
}

将上述程序保存在Demo.scala中。以下命令用于编译和执行该程序。

命令

\>scalac Demo.scala
\>scala Demo

输出

a
number
of
words

查找最小和最大值元素

您可以使用it.minit.max方法从迭代器中找出最小值和最大值元素。这里,我们使用itaitb来执行两个不同的操作,因为迭代器只能遍历一次。以下是示例程序。

例子

object Demo {
   def main(args: Array[String]) {
      val ita = Iterator(20,40,2,50,69, 90)
      val itb = Iterator(20,40,2,50,69, 90)
      println("Maximum valued element " + ita.max )
      println("Minimum valued element " + itb.min )
   }
}

将上述程序保存在Demo.scala中。以下命令用于编译和执行该程序。

命令

\>scalac Demo.scala
\>scala Demo

输出

Maximum valued element 90
Minimum valued element 2

求迭代器的长度

您可以使用it.sizeit.length方法来查找迭代器中可用元素的数量。这里,我们使用 ita 和 itb 来执行两个不同的操作,因为迭代器只能遍历一次。以下是示例程序。

例子

object Demo {
   def main(args: Array[String]) {
      val ita = Iterator(20,40,2,50,69, 90)
      val itb = Iterator(20,40,2,50,69, 90)
      println("Value of ita.size : " + ita.size )
      println("Value of itb.length : " + itb.length )
   }
}

将上述程序保存在Demo.scala中。以下命令用于编译和执行该程序。

命令

\>scalac Demo.scala
\>scala Demo

输出

Value of ita.size : 6
Value of itb.length : 6