news 2026/5/5 23:36:59

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/2 14:10:39

IB、RocE、RDMA、TCP/IP:AI Scale-Out的基础

一、背景&#xff1a;分布式系统与 Scale-Out 架构 在讲解 Scale-Out&#xff08;横向扩展&#xff09;之前&#xff0c;先介绍一下分布式系统的概念。 当计算机系统发展成熟后&#xff0c;单一系统往往面临单点故障和性能瓶颈的问题。为解决这些问题&#xff0c;出现了两个主…

作者头像 李华
网站建设 2026/5/1 12:24:39

14、创建高级控件与视觉效果:从过渡容器到流行特效

创建高级控件与视觉效果:从过渡容器到流行特效 1. 过渡容器的引入与概念 在应用程序中,视图之间的过渡效果能为用户提供更好的视觉反馈,引导用户操作,避免界面信息的突然切换给用户带来的不适。就像在 PowerPoint 演示中,过渡效果能让幻灯片平滑切换。我们将这一概念应用…

作者头像 李华
网站建设 2026/5/2 19:57:42

21、WPF 中的命令系统详解

WPF 中的命令系统详解 1. WPF 中的弱事件模式 WPF 提供了几种不同的弱事件模式实现。其中一种是针对 INotifyPropertyChanged.PropertyChanged 事件的,由 System.ComponentModel.PropertyChangedEventManager 提供,主要用于数据绑定场景。此外,还有针对集合更改事件、…

作者头像 李华
网站建设 2026/4/30 23:53:39

Pytest框架环境切换实战教程!赶快收藏

测试人员每天都跟不同的环境打交道&#xff0c;比如线上环境&#xff0c;测试环境&#xff0c;预上线环境等等&#xff0c;那么作为自动化测试人员写的代码&#xff0c;我们也要具备能自由切换环境的能力&#xff0c;那么今天小编就给大家聊一下&#xff0c;如何能让我们python…

作者头像 李华
网站建设 2026/5/4 18:59:37

青年人才托举必备丨青年人才托举工程项目申报答辩PPT制胜攻略

青年人才托举工程PPT是你个人学术品牌的集中展示。从清晰的逻辑架构到专业的视觉表达&#xff0c;再到自信的现场讲述&#xff0c;每一个环节都需要精心准备。一、青年人才托举工程申报答辩PPT核心内容模块设计一份成功的答辩PPT&#xff0c;需要将你的学术故事清晰地呈现给评委…

作者头像 李华
网站建设 2026/5/2 16:33:06

告别复杂流程:GPT-SoVITS简化语音模型训练路径

告别复杂流程&#xff1a;GPT-SoVITS简化语音模型训练路径 在虚拟主播直播带货、AI配音生成有声书、智能助手模仿家人声音的今天&#xff0c;个性化语音合成已不再是实验室里的“黑科技”&#xff0c;而是逐渐走入日常生活的实用工具。然而&#xff0c;传统语音克隆系统动辄需要…

作者头像 李华