scala中的迭代器

62 阅读2分钟

(一)迭代器的定义

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

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

package iterator

case object iterator01 {
  def main(args: Array[String]): Unit = {
    val list = List(1, 2, 3, 4, 5)
    //如何依次输出这5个元素
    list.foreach(ele => println(ele))

    //问:如何只输出3,4
    val it = list.iterator.drop(2).take(2)
    while(it.hasNext){
      println(it.next()                                                                               )
    }
  }
}

(二)迭代器的基本使用

(1) iterator方法创建对应的迭代器。这个迭代器可以用于遍历列表中的元素。

(2) hasNext方法检查是否还有下一个元素。

(3) next方法获取一个元素


object caseClass02 {
 /*
 * case class
 * 样例类,相比与普通的类,它有三点不同
 *  1.在创建对象时,可以省略new
 *  2.默认情况下,属性都是只读的
  */

  case class Stu(name:String,age:Int)

  def main(args:Array[String]): Unit ={
    val stu1 = Stu("小花",18)
//    2默认情况下,属性都是只读的
//    stu1.age = 19
//    stu1.name = "xxx"
    val stu2 = Stu("小花",18)

    println(stu1)
    println(stu1 == stu2)

    val set1 = Set(stu1,stu2)
    println(set1)
  }
}
package iterator

object iterator022 {
  /*
  *1. next() 获取当前的元素,移动一次迭代器
  * 2 hasNext 判断是否有下一个元素
  * 3. drop(n) 从当前位置开始,跳过n个元素,它返回一个新的迭代器
  * 4.take(n) 从当前位置开始,获取n个元素,它返回一个新的迭代器
  * 5.dupli 复制迭代器
  * 6.toList 把迭代器中剩余的元素放在一个新的List中
  * 7. zip  把两个迭代器合并成一个新的迭代器,可以同步移动这两个迭代器,并且以短的为准
   */
  def main(args:Array[String]): Unit ={
//    val it = List(1,2,3,4,5).iterator
//    it.next()
//    it.next()

    val it1 = List(1,2,3,4,5).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)
    }
  }
}