当前位置: 首页> 财经> 股票 > 长沙疫情最新情况分布图_网站建设的公司工作室_南宁seo优化公司_百度优化教程

长沙疫情最新情况分布图_网站建设的公司工作室_南宁seo优化公司_百度优化教程

时间:2025/7/14 10:15:49来源:https://blog.csdn.net/2402_83590031/article/details/143856581 浏览次数:0次
长沙疫情最新情况分布图_网站建设的公司工作室_南宁seo优化公司_百度优化教程

迭代器、遍历器:

一个不落,挨个访问

package test_28object Test {def main(args: Array[String]): Unit = {val list1 = List(1,2,3,4,5)// 任务:输出每一个元素list1.foreach(println)// 任务:跳过前两个,从第三个开始输出//迭代器//1. 创建一个迭代器(iterator)val it1 = list1.iteratorval it2 = it1.drop(2)//2. 一次访问每个元素while(it2.hasNext){println(it2.next())}println(it2.hasNext)val list2 = List(1,2,3)val it3 = list2.iteratorit3.next()it3.next()it3.next()
//    it3.next() // NoSuchElementException 没有这个元素。迭代器移过头了!!!// 迭代器的使用场景:Map,List,Set......都可以使用迭代器来遍历val m1 = Map("11"->1,"22"->2)val s1 = Set("A","B","C")val it4 = s1.iteratorwhile(it4.hasNext){println(it4.next())}println("-"*20)// 任务是:打印前3个val list4 = List(1,2,3,4,5,6,7)val it5 = list4.iterator
//    take: 从当前的迭代器的位置开始,取n个元素val it6 = it5.take(3)while(it6.hasNext){println(it6.next())}// 只输出4、5、6 跳过前三个,再取三个val it7 = list4.iterator.drop(3).take(3)while (it7.hasNext) {println(it7.next())}// 复制迭代器// 特点:不能回头val list8 = List("A","B","C")val (it8, it9) = list8.iterator.duplicatewhile(it8.hasNext) {println(it8.next())}println("-"*20)println(it9.next())println("-"*20)// 作用:把迭代器中剩余1的数据保存到List中val list9 = List(1,2,3,4)val it10 = list9.iteratorit10.next()//it10.next()val list10 = it10.toList // 剩下的数据保存到List中println(list10) //2,3,4// zip: 拉链// 作用:把两个迭代器组合成一个val it11 = List(1,2,3,4,5,6,7,8).iteratorval it12 = List("one","two","three","four","five").iteratorval it13 = it11.zip(it12)while(it13.hasNext) {val rs = it13.next() // 元组println(s"${rs._1} ----> ${rs._2}")}// 目标:输出// 1 ----> one// 2 ----> two}
}

在scala中完成以下1操作:

1、创建学生信息数据结构和初始数据包。创建一个表示学生信息的类,case stud 包含姓名,年龄,和成绩列表【数学,英语,语文】等属性。然后创建几个学生对象,并将它们存储在一个列表中。

2、创建迭代器并进行基础遍历。为学生列表创建迭代器,使用迭代器的hasNext和next方法遍历学生信息,打印每个学生的姓名。

3、使用duplica方法和筛选操作。利用duplicate方法创建迭代器副本。在原迭代器1上根据年龄条件筛选年龄>20岁的同学,在副本迭代器上根据语文成绩条件筛选>80分的同学。

4、使用zip方法关联信息。创建一个新的列表用于存储每个学生的平均成绩(三门课的平均成绩),再创价吧该列表的迭代器。通过zip方法将学生迭代器和平均成绩迭代器组合,然后打印每个学生的姓名和平均成绩。

5、打印前三名的同学信息。

6、打印从第四名开始的后三位同学的信息。

7、重新创建学生列表的迭代器,用于统计所有学生的所以成绩的综合,并打印结果。

8、再次使用该迭代器,筛选出成绩列表中至少一个特定分数以上的学生信息,并打印他们的姓名和年龄。

// 1. 创建学生信息数据结构和初始数据包
case class Student(name: String, age: Int, scores: List[Double])val students = List(Student("Alice", 18, List(85.0, 90.0, 78.0)),Student("Bob", 22, List(75.0, 80.0, 85.0)),Student("Charlie", 20, List(90.0, 85.0, 92.0)),Student("David", 25, List(88.0, 92.0, 80.0)),Student("Eve", 19, List(70.0, 75.0, 80.0))
)// 2. 创建迭代器并进行基础遍历
val studentIterator = students.iterator
while (studentIterator.hasNext) {val student = studentIterator.next()println(s"学生姓名: ${student.name}")
}// 3. 使用duplicate方法和筛选操作
val (originalIterator, duplicateIterator) = studentIterator.duplicateval filteredByAge = originalIterator.filter(_.age > 20)
while (filteredByAge.hasNext) {val student = filteredByAge.next()println(s"年龄大于20岁的学生: ${student.name}")
}val filteredByChineseScore = duplicateIterator.filter(_.scores(2) > 80)
while (filteredByChineseScore.hasNext) {val student = filteredByChineseScore.next()println(s"语文成绩大于80分的学生: ${student.name}")
}// 4. 使用zip方法关联信息
val averageScores = students.map(student => student.scores.sum / student.scores.length)
val averageScoreIterator = averageScores.iteratorval zipped = studentIterator.zip(averageScoreIterator)
while (zipped.hasNext) {val (student, averageScore) = zipped.next()println(s"学生姓名: ${student.name}, 平均成绩: $averageScore")
}// 5. 打印前三名的同学信息
val topThree = students.take(3)
topThree.foreach(student => println(s"前三名同学信息: 姓名: ${student.name}, 年龄: ${student.age}, 成绩: ${student.scores}"))// 6. 打印从第四名开始的后三位同学的信息
val fromFourth = students.drop(3).take(3)
fromFourth.foreach(student => println(s"从第四名开始的后三位同学信息: 姓名: ${student.name}, 年龄: ${student.age}, 成绩: ${student.scores}"))// 7. 重新创建学生列表的迭代器,用于统计所有学生的所有成绩的总和,并打印结果
val totalScoreIterator = students.iterator
var totalScore = 0.0
while (totalScoreIterator.hasNext) {val student = totalScoreIterator.next()totalScore += student.scores.sum
}
println(s"所有学生的所有成绩总和: $totalScore")// 8. 再次使用该迭代器,筛选出成绩列表中至少一个特定分数以上的学生信息,并打印他们的姓名和年龄
val specificScore = 85.0
val filteredBySpecificScore = students.iterator.filter(student => student.scores.exists(_ >= specificScore))
while (filteredBySpecificScore.hasNext) {val student = filteredBySpecificScore.next()println(s"成绩至少有一科大于等于 $specificScore 的学生: 姓名: ${student.name}, 年龄: ${student.age}")
}

关键字:长沙疫情最新情况分布图_网站建设的公司工作室_南宁seo优化公司_百度优化教程

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: