迭代器

20 阅读2分钟

迭代器

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

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

eg:

package itertor

/*
List(1,2,3,4,5)
 */

object itertor01 {
  def main(args: Array[String]): Unit = {

    val list = scala.collection.immutable.List(1,2,3,4,5)

    list1.foreach(ele => {
      println(ele)
    })
    //跳过list的前面两个元素,而输出随后的两个元素
    val it = list.iterator
    val it1 = it.drop(2).take(2)
    while(it1.hasNext){  //3  4
      println(it1.next())
    }
  }
}

1.迭代器 Itertor

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

1.获取。每个集合都有一个迭代器对象。用它来遍历集合

2.迭代器next()有两个元素。一个是获取当前元素,一个是移动迭代器

Set Map List

object itertor02 {
  /*
  迭代器 Itertor
  专门用来遍历(挨个访问)集合元素
  1.获取。每个集合都有一个迭代器对象。用它来遍历集合
  2.迭代器next()有两个元素。一个是获取当前元素,一个是移动迭代器

  Set  Map  List
   */
  def main(args: Array[String]): Unit ={
    val set1 = Set(1,2,3,4,5)

    //访问这五个元素
    //1.获取迭代器
    val it = set1.iterator
    //输出当前的元素
    println(it.next())//获取,移动
    println(it.next())
    println(it.next())
    println(it.next())

    println(it.next())

    //2.移动迭代器
    //3.输出当前元素
  }
}

2.子迭代器

package itertor

object itertor03 {


//drop() 跳过元素

//take() 获取元素

//duplicate() 复制迭代器,迭代是一次性的,next之后,就不能再回头


  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())
    }

//    val it2 = it.drop(1)//跳过一个元素
//
//    while(it2.hasNext){
//      println(it2.next())
//    }
  }
}

3.toList

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

eg:

package itertor

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

    val it = list1.iterator
    it.next()//1
    it.next()//2

    println(it.next())//3,由List(1,2,3,4,5)里的数字顺着往下填充
    //希望把剩下的内容,装入一个新的List
    val newList = it.toList
    println(newList)
  }
}

4.zip

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

package itertor

object itertor06 {
  /*
  toList 把迭代器中剩余的元素转入一个新的list中

  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)
    }
  }
}