迭代器

16 阅读1分钟
package iterator

object iterator01 {
  def main(args: Array[String]): Unit = {
    val list = List(1,2,3,4,5)
    list.foreach(ele => println(ele))
    val it = list.iterator.drop(2).take(2)
    while(it.hasNext){
      println(it.next())
    }
  }

}

image.png

    1. next() 获取当前的元素, 移动一次迭代器
    1. hasNext 判断是否有下一个元素
    1. drop(n) 从当前位置开始, 跳过 n 个元素, 它返回一个新的迭代器
package iterator

object iterator02 {
 
  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()) // NoSuchElementException: head of empty List

    val it1 = it.drop(2)
    while(it1.hasNext){
      println(it1.next()) // 3 4
    }
  }
}
![image.png](https://p3-xtjj-sign.byteimg.com/tos-cn-i-73owjymdk6/c7be173da7db4e1b8760e9a468a6f6a4~tplv-73owjymdk6-jj-mark-v1:0:0:0:0:5o6Y6YeR5oqA5pyv56S-5Yy6IEAgTEMzMA==:q75.awebp?rk3s=f64ab15b&x-expires=1772413380&x-signature=LpXFq59McMkUcVW%2FNvw67S%2FewrA%3D)

    1. next() 获取当前的元素, 移动一次迭代器
    1. hasNext 判断是否有下一个元素
    1. drop(n) 从当前位置开始, 跳过 n 个元素, 它返回一个新的迭代器
    1. take(n) 从当前位置开始, 获取 n 个元素, 它返回一个新的迭代器
    1. duplicate 复制当前迭代器
    1. toList 把迭代器中剩余的元素放在一个新的List中
    1. zip 把两个迭代器合并为一个新的迭代器, 可以同时移动这两个迭代器, 并且可以同时访问
package iterator

object iterator03 {
 

  def main(args: Array[String]): Unit = {
    // val it = List(1,2,3,4,5).iterator
    // it.next()
    // val list1 = it.toList
    // println(list1)

    val it1 = List(1,2,3,4,5,6).iterator
    val it2 = List("one", "two", "three", "four", "five").iterator

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