Scala的迭代器操作实例

Scala 复制代码
object Test2 {
  //  1. 创建学生信息数据结构和初始数据
  def main(args: Array[String]): Unit = {


    case class Student(name: String, age: Int, scores: List[Int])

    val students = List(
      Student("Alice", 21, List(90, 85, 88)),
      Student("Bob", 19, List(78, 92, 85)),
      Student("Charlie", 22, List(88, 77, 93)),
      Student("David", 20, List(90, 88, 87)),
      Student("Eve", 21, List(76, 85, 92))
    )
    //  创建迭代器并进行基础遍历
    val studentIterator = students.iterator
    while (studentIterator.hasNext) {
      println(studentIterator.next().name)
    }
    //  3. 使用duplicate方法和筛选操作
    val duplicatedIterator = students.iterator
    val ageFiltered = students.filter(_.scores.head > 20) // 假设scores的第一个元素是年龄
    val chineseFiltered = students.filter(_.scores.tail.last > 80) //
    //  4. 使用zip方法关联信息
    val averageScores = students.map(student => student.scores.sum / student.scores.size)
    val zippedIterator = students.iterator.zip(averageScores.iterator)
    while (zippedIterator.hasNext) {
      val (student, avgScore) = zippedIterator.next()
      println(s"${student.name} has an average score of $avgScore")
      //    5. 打印前三名的同学信息
      val topThree = students.take(3)
      topThree.foreach(println)
      //    6. 打印从第4名开始的后3位同学的信息
      val fromFourthToSixth = students.drop(3).take(3)
      fromFourthToSixth.foreach(println)
      //    7. 重新创建学生列表的迭代器
      //    用于统计所有学生的所有成绩的总和
      //    打印结果
      val totalScoresIterator = students.iterator.flatMap(_.scores)
      val totalScores = totalScoresIterator.sum
      println(s"Total scores: $totalScores")

      //    8. 再次使用该迭代器,筛选出成绩列表中有至少一个特定分数以上的学生信息,并打印他们的姓名和年龄
      val highScoreThreshold = 90
      val highScoreStudents = students.filter(_.scores.exists(_ > highScoreThreshold))
      highScoreStudents.foreach(student => println(s"Name: ${student.name}, Age: ${student.age}"))

    }
  }
}
相关推荐
典典分享指南16 小时前
用结构化数据管理产品知识库
scala·bash·batch·actionscript
Thomas21434 天前
scala 闭包
开发语言·后端·scala
江畔柳前堤4 天前
前台·中台·后台:2026年AI原生时代的架构全景图
开发语言·人工智能·算法·机器学习·架构·scala·ai-native
Thomas214312 天前
Java scala 数组 链表
java·链表·scala
江畔柳前堤14 天前
消息队列:从直觉到精通的完整认知地图
开发语言·人工智能·算法·机器学习·ruby on rails·scala
hopsky1 个月前
《Scala 学习手册》核心内容详解
人工智能·学习·scala
abcy0712131 个月前
scala playframework 搭建与新建controller教程
scala
lpfasd1231 个月前
编程语言榜单变迁分析
开发语言·后端·scala
戮漠summer2 个月前
Missing Semester 计算机教育中缺失的一课 Lecture 01 Shell
开发语言·后端·scala
醉熏的石头2 个月前
Ubuntu 中的编程语言(中)
linux·ubuntu·scala