news 2026/4/16 14:23:06

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/4/15 14:44:27

16、控件外观定制与2D、3D世界融合开发指南

控件外观定制与2D、3D世界融合开发指南 1. 控件外观定制 1.1 控件模板与子部件 对于包含子部件的控件, ControlTemplate 可视为描述子部件位置的视觉结构。重写 OnApplyTemplate 方法时,可将行为与这些子部件关联起来。设计某些控件的 ControlTemplate 时,查看其 T…

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

25、WPF 控件与视觉设计及性能优化全攻略

WPF 控件与视觉设计及性能优化全攻略 代码规范 在 .NET 环境下创建控件时,代码应尽可能遵循 .NET 惯用风格,符合行业专家以及微软 .NET 和 C# 团队制定的准则与惯例。《Framework Design Guidelines》这本书详细阐述了优秀 API 设计的注意事项。合理组织和构建控件代码固然…

作者头像 李华
网站建设 2026/4/16 13:44:02

ST7789V在儿童智能手表中的色彩校准实践

让儿童手表屏幕“说真话”&#xff1a;ST7789V驱动下的色彩校准实战你有没有注意过&#xff0c;两块看起来一模一样的儿童智能手表&#xff0c;打开后屏幕颜色却一个偏蓝、一个发黄&#xff1f;图标明明是绿色的&#xff0c;怎么有的孩子说“像柠檬”&#xff1f;这背后不是质量…

作者头像 李华
网站建设 2026/4/16 13:30:06

GPT-SoVITS语音合成精度提升秘诀:数据预处理要点

GPT-SoVITS语音合成精度提升秘诀&#xff1a;数据预处理要点 在AI语音技术飞速发展的今天&#xff0c;我们早已不再满足于机械朗读式的“机器人音”。无论是虚拟主播、有声书生成&#xff0c;还是为视障人士提供无障碍阅读服务&#xff0c;用户都希望听到更自然、更具个性的声音…

作者头像 李华
网站建设 2026/4/16 13:36:54

【性能测试】常见适用场景以及策略

面对日益复杂的业务场景和不同的系统架构&#xff0c;前期的需求分析和准备工作&#xff0c;需要耗费很多的时间。而不同的测试策略&#xff0c;也对我们的测试结果是否符合预期目标至关重要。 这篇博客&#xff0c;聊聊我个人对常见的性能测试策略的理解&#xff0c;以及它们…

作者头像 李华
网站建设 2026/4/16 13:35:48

支付即营销:解锁客户忠诚新密码

引言&#xff1a;从交易终点到关系起点每一笔支付完成的时刻&#xff0c;大多数商家看到的是一次交易的结束。然而&#xff0c;这个被忽略的节点实际上蕴含着巨大的商业价值——它是建立持续客户关系的绝佳起点。今天我们要探讨的这种模式&#xff0c;将支付瞬间转变为营销机会…

作者头像 李华