scala的迭代器

32 阅读2分钟
(一)迭代器的定义

迭代器是一种用于遍历集合元素的对象。它提供了统一的方式来访问各种集合类 型(如列表、映射、集合等)中的元素,而不需要了解集合的内部结构。

在 Scala 中,迭代器是一种抽象的概念,它有特定的接口和方法来实现元素的遍历。

(二)迭代器的 基本使用

我们来看实际的需求。遍历输出List中的元素。

(三)迭代器的优点

(1)内存效率高。迭代器采用延迟计算的方式,它不会将整个集合加载到内存中, 而是在每次调用next方法时才计算并返回下一个元素。

(2)统一的遍历方法。迭代器为不同类型的集合(如列表、集合、映射等)提供了 一种统一的遍历方式。无论底层集合的具体结构如何,只要能获取到迭代器,就 可以使用相同的hasNext和next方法来遍历元素。

(3)支持函数式编程风格,便于链式操作。

一.含义

集合,有很多的元素,提供一个统一的方式来访问这些元素

  1. 获取迭代器
  2. hasNext判断是否结束
  3. next获取当前元素,并移动迭代器

二.应用

  1. next()获取当前的元素,移动一次迭代器
  2. hasNext判断是否有下一个元素
  3. drop(n)从当前位置开始,跳过n个元素,它返回一个新的迭代器
  4. take(n)从当前位置开始,获取n个元素,它返回一个新的迭代器
  5. duplicate 复制迭代器
  6. toList.把迭代器中剩余的元素放在一个新的List中
  7. zip 把两个迭代器合并成一个新的迭代器,可以同步移动这两个迭代器,并且以短的为准
  • 方法一
def main(args: Array[String]): Unit = {
  //获取一个迭代器
  val it = List(1,2,3,4).iterator
  println(it.next())
  println(it.next())
  println(it.next())
  println(it.next())
}
}
-------------
输出:
1
2
3
4
  • 应用-3

    def main(args: Array[String]): Unit = { //获取一个迭代器 val it = List(1,2,3,4).iterator val it1 = it.drop(2) while (it1.hasNext){ println(it.next()) } }

    输出: 3 4

  • 应用-4

    def main(args: Array[String]): Unit = { //获取一个迭代器 val it = List(1,2,3,4,5,6,7,8,9,10).iterator val it1 = it.drop(5).take(4) while (it1.hasNext){ println(it.next()) } }

    输出: 6

    7 8 9 10

  • 应用-5

def main(args: Array[String]): Unit = {
  //获取一个迭代器
  val it = List(1,2,3,4,5,6,7,8,9,10).iterator
  val (it1,it2) = it.duplicate
  //使用it1访问前三个
  val it3 = it1.take(3)
  while (it3.hasNext){
    println(it3.next())
  }
  println("-------------------------------")
  while (it2.hasNext){
    println(it2.next())
  }
}

输出效果 image.png

  • 应用-6

    val it = List(1,2,3,4,5).iterator it.next() it.next() val list1 = it.toList println(list1)

  • 应用-7

    def main(args: Array[String]): Unit = { val it1 = List(1,2,3,4,5,6).iterator val it2 = List("one","two","three").iterator val it3 = it1.zip(it2)

    while(it3.hasNext){ val rs = it3.next() println(rs._1,rs._2) } }

输出效果:

image.png