iterator

28 阅读1分钟

迭代器 iterator

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

  1. 获取迭代器。
  2. hasNext 判断是否结束
  3. next 获取当前元素,并移动迭代器
object iterator01 {
  def main(args: Array[String]): Unit = {
    val set = Set()
    //set.iterator

    //val list = List(1, 2, 3, 4, 5)
    //如何依次输出这个5个元素?
    //list.foreach(ele => println(ele))

    //问: 如何只输出: 3,4
    //1. 获取迭代器
    //val it = list.iterator.drop(2).take(2)
    val it = Set(10,2,1,0,-1).iterator //.drop(2).take(2)
    //2. 使用while循环,hasNext 判断有下一个元素?
    while(it.hasNext){
      println(it.next()) // next() 获取当前的元素,并且向后移动一次迭代器
    }
  }
}
  1. next() 获取当前的元素,移动一次迭代器
  2. hasNext 判断是否有下一个元素
  3. drop(n) 从当前位置开始,跳过n个元素,它返回一个新的迭代器
  4. crop():从当前位置开始,取出 n 个元素,它返回一个新的迭代器,
  5. duplicate 是删除元素
object iterator02 {
  /**
   * 1. next() 获取当前的元素,移动一次迭代器
   * 2. hasNext 判断是否有下一个元素
   * 3. drop(n) 从当前位置开始,跳过n个元素,它返回一个新的迭代器
   * 4. crop():从当前位置开始,取出 n 个元素,它返回一个新的迭代器,
   * 5. duplicate 是删除元素
   */
  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