迭代器不是集合,而是一种逐个访问集合元素的方式, 迭代器上的两个基本操作是 next 和 hasNext 。调用 it.next()将返回迭代器的下一个元素,并提高迭代器的状态,您可以使用Iterator的 it.hasNext 方法来查找是否还有其他要返回的元素。
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.min 和 it.max 方法从迭代器中找出最小和最大值的元素。
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.size 或 it.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
以下是在使用Iterator玩游戏时可以使用的重要方法。有关可用方法的完整列表,请查看Scala的官方文档。
Sr.No | Methods with 描述 |
---|---|
1 | def hasNext:Boolean 测试此迭代器是否可以提供另一个元素。 |
2 | def next():A 产生此迭代器的下一个元素。 |
3 | def ++(that: => Iterator[A]): Iterator[A] 将此迭代器与另一个连接。 |
4 | def ++[B >: A](that :=> GenTraversableOnce[B]): Iterator[B] 将此迭代器与另一个连接。 |
5 | def addString(b:StringBuilder):StringBuilder 返回附加了元素的字符串生成器b。 |
6 | def addString(b:StringBuilder,sep:String):StringBuilder 返回使用分隔符字符串附加了元素的字符串生成器b。 |
7 | def buffered:BufferedIterator [A] 从此迭代器创建一个缓冲的迭代器。 |
8 | def contains(elem:Any):Boolean 测试此迭代器是否包含给定值作为元素。 |
9 | def copyToArray(xs:Array [A],开始:Int,len:Int):Unit 将由此迭代器产生的选定值复制到数组中。 |
10 | def count(p: (A) => Boolean): Int 计算可遍历或迭代器中满足断言的元素数。 |
11 | def drop(n:Int):Iterator[A] 使此迭代器前进到前n个元素或迭代器的长度(以较小者为准)。 |
12 | def dropWhile(p: (A) => Boolean): Iterator[A] 跳过满足给定断言p的此迭代器的最长元素序列,并返回其余元素的迭代器。 |
13 | def duplicate:(Iterator[A],Iterator[A]) 创建两个新的迭代器,它们都在与此迭代器相同的元素上进行迭代(以相同的顺序)。 |
14 | def exists(p: (A) => Boolean): Boolean 如果给定断言p保持此迭代器产生的某些值,则返回true,否则返回false。 |
15 | def filter(p: (A) => Boolean): Iterator[A] 在满足断言p的所有迭代器元素上返回一个迭代器。元素的顺序被保留。 |
16 | def filterNot(p: (A) => Boolean): Iterator[A] 在此迭代器的所有不满足断言p的元素上创建一个迭代器。 |
17 | def find(p: (A) => Boolean): Option[A] 查找满足断言的迭代器产生的第一个值(如果有)。 |
18 | def flatMap[B](f: (A) => GenTraversableOnce[B]): Iterator[B] 通过将函数应用于该迭代器产生的所有值并串联输出来创建新的迭代器。 |
19 | def forall(p: (A) => Boolean): Boolean 如果给定断言p对此迭代器产生的所有值均成立,则返回true,否则返回false。 |
20 | def foreach(f: (A) => Unit): Unit 将函数f应用于此迭代器产生的所有值。 |
21 | def hasDefiniteSize:Boolean 对于空的迭代器,返回true,否则返回false。 |
22 | def indexOf(elem:B):Int 返回指定对象在此可迭代对象中首次出现的索引。 |
23 | def indexWhere(p: (A) => Boolean): Int 返回满足断言的第一个产生值的索引,即-1。 |
24 | def isEmpty:Boolean 如果hasNext为false,则返回true,否则为false。 |
25 | def isTraversableAgain:Boolean 测试此Iterator是否可以重复遍历。 |
26 | def length:Int 返回此迭代器中的元素数。此方法返回后,迭代器在其末尾。 |
27 | def map[B](f: (A) => B): Iterator[B] 返回一个新的迭代器,该迭代器通过将函数f应用于该迭代器生成的每个值。 |
28 | def max:A 查找最大的元素。此方法返回后,迭代器在其末尾。 |
29 | def min:A 查找最小元素。此方法返回后,迭代器在其末尾。 |
30 | def mkString:String 在字符串中显示此可遍历或迭代器的所有元素。 |
31 | def mkString(sep:String):String 使用分隔符字符串在字符串中显示此可遍历或迭代器的所有元素。 |
32 | def nonEmpty:Boolean 测试可遍历或迭代器是否为空。 |
33 | def padTo(len:Int,elem:A):Iterator[A] 将元素值附加到此迭代器,直到达到给定的目标长度。 |
34 | def patch(from:Int,patchElems:Iterator [B],replace:Int):Iterator [B] 返回带有迭代值的迭代器。 |
35 | def product:A 将这个集合的元素相乘。 |
36 | def sameElements(that:Iterator [_]):Boolean 如果两个迭代器以相同的顺序产生相同的元素,则返回true,否则返回false。 |
37 | def seq:Itertor[A] 返回集合的顺序视图。 |
38 | def size:Int 返回此可遍历或迭代器中的元素数。 |
39 | def slice(from:Int,until:Int):Iterator[A] 创建一个迭代器,该迭代器返回此迭代器产生的值的间隔。 |
40 | def sum:A 返回此可遍历或迭代器相对于num中+运算符的所有元素的总和。 |
41 | def take(n:Int):Iterator[A] 返回仅生成此迭代器前n个值的迭代器,如果生成的迭代器少于n个值,则返回整个迭代器。 |
42 | def toArray:Array[A] 返回包含此可遍历或迭代器的所有元素的数组。 |
43 | def toBuffer:Buffer[B] 返回一个包含此遍历或迭代器所有元素的缓冲区。 |
44 | def toIterable:Iterator[A] 返回包含此遍历或迭代器的所有元素的Iterable。对于无限迭代器,这不会终止。 |
45 | def toIterator:Iterator[A] 返回一个包含此遍历或迭代器所有元素的迭代器。对于无限迭代器,这不会终止。 |
46 | def toList:List[A] 返回包含此遍历或迭代器的所有元素的列表。 |
47 | def toMap [T,U]:Map [T,U] 返回包含此遍历或迭代器的所有元素的映射。 |
48 | def toSeq:Seq [A] 返回一个包含此遍历或迭代器的所有元素的序列。 |
49 | def toString():String 将此迭代器转换为字符串。 |
50 | def zip [B](that:Iterator [B]):Iterator [(A,B) 返回一个新的迭代器,该迭代器包含由该迭代器的相应元素组成的对。新迭代器返回的元素数与迭代器返回的最小元素数(A或B)相同。 |
祝学习愉快!(内容编辑有误?请选中要编辑内容 -> 右键 -> 修改 -> 提交!)