Scala的迭代器(二)

35 阅读2分钟

迭代器的常用使用

专门用来遍历(挨个访问)集合元素。

  1. 获取。每个集合都有一个迭代器对象。用它来去遍历集合。
  2. 迭代器.next() 获取当前元素,移动迭代器

drop:跳过指定个数的元素drop(3)

take:获取指定数量的元素

object lterator3 {
  /*
  * 迭代器 Iterator
  * 专门用来遍历(挨个访问)集合元素。
  *  1. 获取。每个集合都有一个迭代器对象。用它来去遍历集合。
  *  2. 迭代器.next() 获取当前元素,移动迭代器
  *
  *  drop:跳过指定个数的元素drop(3)
  *
  *  take:获取指定数量的元素
  * */
  def main(args: Array[String]): Unit = {
    val list1 = List(1,2,3,4,5)

    val it = list1.iterator

    val it2 = it.take(3) // 从当前位置开始,只获取三个元素

    while(it2.hasNext){
      println(it2.next())
    }
  }
}

迭代器是一次性的,next之后,就不能再回头

duplicate:复制迭代器

  *  迭代器是一次性的,next之后,就不能再回头
  *  duplicate:复制迭代器
  *
  * */
  def main(args: Array[String]): Unit = {
    val list1 = List(1,2,3,4,5)

    val it = list1.iterator

    val (it1,it2) = it.duplicate

    it.next() // 一次性
    it.next()
    while(it.hasNext){
      println(it.next())
    }
    println("---------------")
    while(it2.hasNext){
      println(it1.next())
    }


  }

toList 把迭代器中剩余的元素转入一个新的list

 *  toList 把迭代器中剩余的元素转入一个新的list
  *
  * */
  def main(args: Array[String]): Unit = {
    val list1 = List(1,2,3,4,5)

    val it = list1.iterator
    it.next()
    it.next()

    println(it.next()) // 3
    // 希望把剩余的内容,装入一个新的List
    val newList = it.toList
    println(newList)  // 4 5

  }

zip;两个迭代器的元素按照顺序组合成一个新的迭代器。长度不一,会以短的为准

*  zip;两个迭代器的元素按照顺序组合成一个新的迭代器。长度不一,会以短的为准
*
* */
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 pair = it3.next()
    println(pair._1, pair._2)
  }
}