迭代器

3 阅读1分钟

一.迭代器 iterator

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

1.获取迭代器

2.hasNext判读是否结束

3.next获取当前元素,并移动迭代器

package iteraator

object iterator01 {
  def main(args: Array[String]): Unit = {
    //val list = List(1,2,3,4,5)
    //如何依次输出这5个元素?
    //list.foreach(ele=>println(ele))
   // list.foreach(ele => println(ele))
    //问:如何只输出:3,4
    //val it = list.iterator.drop(2).take(2)
    val it =Set(3,10,2,1,0,-1).iterator
    while(it.hasNext){
      println(it.next())
    }
  }
}

image.png

package iteraator
object iterator02 {
  /**
   * 1.next()获取当前元素,移动一次迭代器
   * 2.hasNext判断是否有下一个元素
   * 3.drop(n)从当前位置开始。跳过n个元素,它返回一个新的迭代器
   * 4.take(n)从当前位置开始。获取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
//    println(it.next())
//    println(it.next())
//       println(it.next())
//       println(it.next())
//       println(it.next())   //
    val it3= it.take(3)
    while (it3.hasNext){
      println(it3.next())
    }
    println("= = = = = = = = = ")
//    while(it2.hasNext){
 //     println(it2.next())//6,7,8,9
    }
  }

/**

  • 1.next()获取当前元素,移动一次迭代器

  • 2.hasNext判断是否有下一个元素

  • 3.drop(n)从当前位置开始。跳过n个元素,它返回一个新的迭代器

  • 4.take(n)从当前位置开始。获取n个元素,它返回一个新的迭代器

  • 5.duplicate 复制迭代器

  • 6.toList把迭代器中剩余的一个元素放在一个新的List中

  • 7.zip把两个迭代器合并成一个新的迭代器,可以同步移动这两个迭代器,并且以短的为准 */

    package iteraator

    object iterator03 { def main(args: Array[String]): Unit = { 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.) } } }

image.png