news 2026/5/26 1:20:37

scala基础--集合--Set/Map/Tuple

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
scala基础--集合--Set/Map/Tuple

Set

默认情况下,Scala使用的是不可变集合,如果你想使用可变集合,需要引用scala.collection.mutable.Set包

不可变Set

def main(args:Array[String]):Unit = { // 创建set集合 val set1 = Set(1,2,3,4,5) // 数据不可以重复,且是无序的 val set2 = Set(23,13,25,22,34,13) println(set2) // HashSet(25, 13, 34, 22, 23) 他会自动将重复数据过滤出去,且打印是无序的 // 遍历集合set1 for (x <- set1){ println(x) } set1.foreach(x => println(x)) // 添加元素 val set3 = set1 + 20 // 删除元素 val set4 = set1 - 3 // 合并set val set5 = set1 ++ set3 }

可变Set

def main(args:Array[String]):Unit={ // 定义可变Set val set1 = mutable.Set(2,4,6,7,3,1) // 集合添加元素 set1 += 8 set1.add(12) // 集合删除元素 set1 -= 4 set1.remove(1) // 合并两个set val set2 = mutable.Set(11,22,33,55) set1 ++= set2 // 将set2中的元素添加到set1中 // 打印集合 set1.foreach(println) }

Map

Scala 中,Map 是一种键值对的集合,其中每个键都是唯一的。Scala 提供了两种类型的 Map:不可变 Map 和可变 Map

不可变 Map 是默认的 Map 实现,位于 scala.collection.immutable 包中。一旦创建,不可变 Map 的内容不能被修改,但可以通过操作返回新的 Map

不可变Map

def main(args:Array[String]):Unit = { // 创建Map val map1 = Map(1 -> "你好",2 -> "大家好",3 -> "哈哈哈") // 添加元素 val map2 = map1 + (4 -> "你") // 删除元素 val map3 = map1 - 1 // 遍历循环 map1.foreach(x => println(x)) // 访问map的所有key 或者value for (i -> map1.keys){ println(s"${i}--->${map1(i)}") } // 访问某一个key的value println(map1.get(1).get) println(map1.getOrElse(2,0)) // 如果有key则返回key的value,但是如果没有key则为0 println(map1(1)) // 最简单!!!!!! }

可变Map

def main(args:Array[String]):Unit = { // 创建可变map val map1 = mutable.Map(1 -> "值1", 2 -> "值2", 3 -> "值3") // 添加元素 map1.put(4,"值4") map1 += ((5,"值5")) // 删除元素 map1 -=((5,"值6")) map1.remove(1) // 指定key就行 // 修改元素 map1.update(1,"值一") map1(2) = "值二" // 合并两个Map val map2 = mutable.Map(12 -> "值12", 13 -> "值13") map1 ++= map2 }

Tuple

Scala元组将固定数量的项目组合在一起,以便它们可以作为一个整体传递。 与数组或列表不同,元组可以容纳不同类型的对象,但它是不可变的
元组中最大只能有22个元素。
def main(args:Array[String]):Unit = { // 创建元组 val tuple1 = ("hello",100,12,true) val tuple2 = (1,2,3,"hello",("你好",12)) // 访问元组(元组的下标从1开始) println(tuple1._1) println(tuple1._2) println(tuple2._5_1) // 遍历所有元组 for (i <- tuple1.productIterator){ println(i) } }
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/22 2:57:37

基于单片机的远程烟雾报警系统

2 系统总体方案设计 通过上一章的火灾报警器的研究确定了设计火灾报警器的必要性&#xff0c;本章是火灾报警器的总体方案设计&#xff0c;确定了设计火灾报警器的硬件方案。 2.1 设计要求 熟悉51单片机的开发环境&#xff0c;用C语言编写程序; 能够自主设计基于单片机的最小系…

作者头像 李华
网站建设 2026/5/20 17:18:17

LCD1602字符显示原理:一文说清其内部结构与工作方式

LCD1602字符显示原理&#xff1a;从硬件到代码&#xff0c;彻底搞懂它的底层逻辑在嵌入式开发的早期阶段&#xff0c;你有没有遇到过这样的场景&#xff1f;MCU已经跑起来了&#xff0c;传感器数据也读到了&#xff0c;结果一到“把温度显示出来”这一步就卡住了——不是屏幕全…

作者头像 李华
网站建设 2026/5/23 12:38:42

无需大量算力!GPT-SoVITS轻量级训练方案出炉

无需大量算力&#xff01;GPT-SoVITS轻量级训练方案出炉 在虚拟主播直播间里&#xff0c;一个声音与真人几乎无异的AI正在流畅播报商品信息&#xff1b;而在另一间康复中心&#xff0c;一位因疾病失去发声能力的患者正通过一段病前录音重建自己的“声音”——这一切背后&#x…

作者头像 李华
网站建设 2026/5/24 18:06:51

vue3中使用echarts实现3D饼图(组件封装)

前言 之前那篇文章已经实现3D饼图效果&#xff0c;这次只是在其基础上进行了简单的组件封装。详情请看vue3中用echarts达到3D饼图的实现 效果演示 添加无数据时占位盒子。&#xff08;自行根据ui设计更换样式&#xff09; 封装组件 Pie3D.vue组件 <template><divv-i…

作者头像 李华
网站建设 2026/5/19 22:44:06

基于单片机粮仓温湿度检测控制系统设计

一、系统总体设计方案 本粮仓温湿度检测控制系统以单片机为核心&#xff0c;搭配温湿度传感器、数据存储模块、报警模块及通风除湿执行模块&#xff0c;构建 “检测 - 分析 - 控制 - 反馈” 的闭环系统&#xff0c;旨在实时监控粮仓内温湿度变化&#xff0c;预防粮食霉变、虫害…

作者头像 李华
网站建设 2026/5/22 18:24:06

在学习SQL注入或XSS这类具体漏洞时,如何设计一个高效的“理论+实践”学习循环?

建立高效的“理论实践”循环&#xff0c;正是能否真正掌握SQL注入或XSS这类Web安全核心漏洞的分水岭。下面这个框架&#xff0c;希望能帮助您将知识转化为真实的攻防能力。学习阶段核心目标关键任务/方法推荐工具/环境① 靶场环境搭建​准备好一个安全、隔离的实验平台配置集成…

作者头像 李华