news 2026/4/23 6:51:08

头歌Scala-Scala中集合的使用(含通关代码)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
头歌Scala-Scala中集合的使用(含通关代码)

第1关:List 列表的使用

编程要求


仔细阅读右侧编辑区内给出的代码框架及注释,在 Begin-End 间编写程序代码,连接两个列表并对数据去重,具体要求如下:

接收给定的多行数据(例:4 \n 56 \n 5 \n -10 \n 10,其中第一个数代表列表长度,其余数代表具体值,\n 仅用来说明前一个数与另一个数之间是换行,实际数据中并没有);
将接收到的数据添加进列表,并把该列表连接到列表 list 之后;
对连接后的集合数据去重,并输出去重后的集合。
测试说明
平台将使用测试集运行你编写的程序代码,若全部的运行结果正确,则通关。

例:
测试输入:

4
3
4
6
2
预期输出:

List(2, 4, 5, 3, 6)
开始你的任务吧,祝你成功!

代码1

import scala.collection.mutable.ArrayBuffer import scala.io.StdIn object ForDemo { def main(args: Array[String]): Unit = { // 创建集合list val list =List(2,4,5) // 接收给定的第一个数据 val n=StdIn.readInt() // 创建数组 var arr = new ArrayBuffer[Int]() // 将数据添加到数组 for(x<-1 to n){ var line =StdIn.readLine() var line1=line.toInt arr.insert(x-1,line1) } // 将数组转为列表 val list1= arr.toList // 请在 Begin-End 间编写代码 /********** Begin **********/ // 连接两个列表 val combinedList = list ++ list1 // 去重 val distinctList = combinedList.distinct // 输出结果 println(distinctList) /********** End **********/ } }

第2关:Set 集合的使用

编程要求


仔细阅读右侧编辑区内给出的代码框架及注释,在 Begin-End 间编写程序代码,求两个集合的交集,具体要求如下:

接收给定的多行数据(例:4 \n 56 \n 5 \n -10 \n 10,其中第一个数代表集合长度,其余数代表具体值,\n 仅用来说明前一个数与另一个数之间是换行,实际数据中并没有);
将接收到的数据添加进集合,并输出该集合与给定集合 set 的交集。
测试说明
平台将使用测试集运行你编写的程序代码,若全部的运行结果正确,则通关。

例:
测试输入:

4
3
4
6
2
预期输出:

List(2, 4, 5, 3, 6)
开始你的任务吧,祝你成功!

代码2

import scala.collection.mutable.ArrayBuffer import scala.io.StdIn object ForDemo { def main(args: Array[String]): Unit = { val set = Set(2,3,7,8) // // 请在 Begin-End 间编写代码 // /********** Begin **********/ val n=StdIn.readInt() // 创建动态数组,ArrayBuffer var arr = new ArrayBuffer[Int]() // 利用循环将数据添加到数组,使用循环是最直观和简洁的方式来处理多行输入 for(x<- 1 to n){ val element = StdIn.readInt() arr += element } // 将数组转为列表 val set1= arr.toSet print("两个集合的交集是:") print(set.intersect(set1)) /********** End **********/ } }

第3关:Map 映射的使用

编程要求


仔细阅读右侧编辑区内给出的代码框架及注释,在 Begin-End 间编写程序代码,统计给定字符串中每个单词出现的次数,具体要求如下:

接收给定的一行字符串(例:hello-hello,hi,job-hi,...,依次切割英文逗号和“-”,可以得到每个单词);
统计各单词出现的次数。
测试说明
平台将使用测试集运行你编写的程序代码,若全部的运行结果正确,则通关。

例:
测试输入:

hello-hello,hi,job-hi
预期输出:

单词: hi, 个数 1
单词: hello, 个数 2
开始你的任务吧,祝你成功!

代码3

import scala.io.StdIn object ForDemo { def main(args: Array[String]): Unit = { // 请在 Begin-End 间编写代码 /********** Begin **********/ // 统计给定字符串中各单词出现的次数 val str=StdIn.readLine()//读取一行输入字符串 val words=str.split("[-|,]")//使用正则表达式分割字符串,按逗号和连字符分割,正则表达式中|:表示“或”。 split返回一个数组 //groupBy 是用于将集合中的元素按照指定的规则分组。 //identity 是一个预定义的函数,表示“原样返回输入值”。 //mapValues 是 Scala Map 中的一个方法,用于对 Map 中的每个值进行转换。 //_.length 表示“获取数组的长度”。 //mapValues(_.length),它会将每个值(数组)转换为其长度 val counts=words.groupBy(identity).mapValues(_.length) counts.foreach{case(word,count) => println(s"单词: $word, 个数 $count")}//集合中的每个元素是一个键值对(word 和 count),分别表示单词和对应的计数。 /********** End **********/ } }

第4关:元组的使用

编程要求


仔细阅读右侧编辑区内给出的代码框架及注释,在 Begin-End 间编写程序代码,统计元组中所有整数的积,具体要求如下:

根据给定数据创建元组(给定数据为:23,hello,3,33,hi,map,51);
统计元组中所有整数的积。
测试说明
平台将使用测试集运行你编写的程序代码,若全部的运行结果正确,则通关。

例:
测试输入:


预期输出:

整数积为: 116127
开始你的任务吧,祝你成功!

代码4

object ForDemo { def main(args: Array[String]): Unit = { // 请在 Begin-End 间编写代码 /********** Begin **********/ // 统计元组中所有整数的积 val t=(23,"hello",3,33,"hi","map",51)//val(不可变变量) var product=1//var(可变变量) t.productIterator.foreach{ case num: Int => product *= num // 如果是整数,累乘} case _ => // 忽略其他类型 } println(s"整数积为: $product") /********** End **********/ } }
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/20 18:04:20

怎么选择一家靠谱的数字化服务商助力制造业智能化转型?

在当前制造业加速向智能化、数字化转型的背景下&#xff0c;数字化服务商正成为推动产业变革的核心力量。不同于传统IT供应商&#xff0c;数字化服务商不仅是技术工具的提供者&#xff0c;更是企业智能化升级的战略伙伴&#xff0c;致力于打通数据孤岛、重构业务流程、沉淀工业…

作者头像 李华
网站建设 2026/4/21 5:42:15

卡内基梅隆大学提出DistCA:让AI训练告别“木桶效应“的神奇技术

这项由卡内基梅隆大学庄永浩、陈君达等研究者联合加州大学圣地亚哥分校、伯克利分校、MBZUAI和StepFun公司团队完成的研究发表于2025年10月&#xff0c;论文编号为arXiv:2510.18121v1。感兴趣深入了解的读者可以通过该编号查询完整论文。如果把训练大型AI模型比作一个工厂的流水…

作者头像 李华
网站建设 2026/4/21 5:10:01

LobeChat能否实现AI面试官?招聘筛选自动化系统设计

LobeChat能否实现AI面试官&#xff1f;招聘筛选自动化系统设计 在一场典型的春招中&#xff0c;某科技公司HR团队面对超过3000份简历&#xff0c;仅靠人工完成初筛就需要两周时间。而与此同时&#xff0c;优秀的候选人早已被竞争对手锁定。这种效率与体验的双重失衡&#xff0c…

作者头像 李华
网站建设 2026/4/23 2:36:40

UCLA团队突破大模型生成瓶颈:让AI既快又好的“计划扩散“新方法

在人工智能快速发展的今天&#xff0c;我们经常使用ChatGPT等大语言模型来回答问题、写文章或进行对话。但你有没有注意到&#xff0c;这些AI在生成回答时总是一个字一个字地"打字"&#xff0c;就像一个打字员在慢慢敲键盘&#xff1f;这种现象背后隐藏着一个技术难题…

作者头像 李华
网站建设 2026/4/20 19:12:37

Linux学习:vi编辑器的使用

vi编辑器的两种核心模式命令行模式&#xff08;按ESC键进入&#xff09;:行号&#xff1a;快速跳转到指定行G&#xff1a;光标移动到文件末尾yy&#xff1a;复制当前行&#xff08;光标所在行&#xff09;y3&#xff1a;复制当前行及后续2行&#xff08;共3行&#xff09;p&…

作者头像 李华
网站建设 2026/4/18 9:44:19

2026年如何选择适合自己的虚拟信用卡

废话少说&#xff0c;直接上对比图。 产品名称主要优势费率与门槛适合人群与场景LimaoPay开卡流程简单&#xff1b;无年费&#xff1b;支持Facebook、tiktok、YouTube&#xff1b;可绑定Google Pay&#xff1b;交易实时、汇率透明&#xff1b;新手友好需kyc; 开卡费约 1.5 美金…

作者头像 李华