高贵的hasNext带着“迭代器”袭击你的大脑

迭代器

ini 复制代码
package listANDcaseclass

object hasNext1 {
  def main(args: Array[String]): Unit = {
    val list1 = List(1,2,3,4,5)
    val set = Set(2,4,5,3,9)
    list1.foreach((ele => println(ele)))
    set.foreach(ele => Set)

    val iterator = list1.iterator
    // hasNext 加 next 更新
    while (iterator.hasNext){
      println(iterator.next())
    }
  }
}

什么是迭代器?

迭代器:

1.next() 获取下一个,移动迭代器的位置。如果没有下一个就会报错

2.hasNext 判断当前是否存在下一个元素:false,true

scss 复制代码
package listANDcaseclass

object hasNext2 {
  def main(args: Array[String]): Unit = {
    val it = List(1,2,3,4,5).iterator
    println(it.next())
    println(it.next())
    println(it.next())
    println(it.next())
    println(it.next())
    println(it.next())

    println(it.hasNext)//当前是否还有下一个元素
    println(it.next())//第六次使用next,就会因没有下一个元素报错!
  }
}

迭代器:

3.drop() 跳过指定数量的元素,返回一个新的迭代器

注意:迭代器只能使用一次,多次使用容易出现错误!

kotlin 复制代码
package listANDcaseclass

object hasNext3 {
  def main(args: Array[String]): Unit = {
    val it1 = List(1,2,3,4,5).iterator
    // 跳过前两个元素
    val it2 = it1.drop(2)
    while (it2.hasNext){println(it2.next())}
  }
}

迭代器:

4.take() 获取指定数量的元素,返回一个新的元素的迭代器

scss 复制代码
package listANDcaseclass

object hasNext4 {
  def main(args: Array[String]): Unit = {
    val it1 = List(1,2,3,4,5).iterator
    it1.next()
    it1.next()
    val it2 = it1.take(2)
    while(it2.hasNext){println(it2.next())}
  }
}
相关推荐
渣渣盟1 天前
Flink Table API与SQL流数据处理实战
大数据·sql·flink·scala
howard20054 天前
1.5 掌握Scala内建控制结构
scala·内建控制结构
howard20054 天前
1.1.2 Windows上安装Scala
scala·windows版本
allway24 天前
Debian Regular Expressions
运维·debian·scala
、BeYourself6 天前
Scala 字面量
开发语言·后端·scala
、BeYourself14 天前
Scala 数据类型
开发语言·后端·scala
howard200514 天前
1.2 Scala变量与数据类型
scala·变量·数据类型·常量
渣渣盟15 天前
Flink定时器实战:处理时间与事件时间
大数据·flink·scala