Scala—Map用法详解
Scala—Map用法详解
在 Scala 中,Map
是一种键值对的集合,其中每个键都是唯一的。Scala 提供了两种类型的 Map
:不可变 Map
和可变 Map
。
1. 不可变集合(Map
)
不可变 Map
是默认的 Map
实现,位于 scala.collection.immutable
包中。一旦创建,不可变 Map
的内容不能被修改,但可以通过操作返回新的 Map
。
// 创建一个空的 Map
val emptyMap: Map[String, Int] = Map()// 创建一个包含初始键值对的 Map
val map1: Map[String, Int] = Map("one" -> 1, "two" -> 2, "three" -> 3)
常见操作
- 添加键值对
+
:添加一个键值对++
:添加多个键值对
val newMap1 = map1 + ("four" -> 4) // 添加一个键值对
val newMap2 = map1 ++ Map("four" -> 4, "five" -> 5) // 添加多个键值对
- 删除键值对
-
:删除一个键值对--
:删除多个键值对
val newMap3 = map1 - "one" // 删除一个键值对
val newMap4 = map1 -- List("one", "two") // 删除多个键值对
-
检查键是否存在
contains
:检查是否包含某个键
val containsOne = map1.contains("one") // 结果: true
-
获取值
apply
:通过键获取值get
:通过键获取值,返回Option
类型getOrElse
:通过键获取值,如果不存在则返回默认值
val valueOfOne = map1("one") // 获取键 "one" 对应的值
val optionValueOfOne = map1.get("one") // 获取键 "one" 对应的值,返回 Option
val defaultValue = map1.getOrElse("six", 0) // 获取键 "six" 对应的值,如果不存在则返回 0
-
遍历键值对
foreach
:遍历所有键值对keys
:获取所有键values
:获取所有值map
:映射所有键值对filter
:过滤键值对
map1.foreach { case (key, value) => println(s"$key -> $value") } // 遍历并打印所有键值对val keys = map1.keys // 获取所有键 val values = map1.values // 获取所有值val mappedMap = map1.map { case (key, value) => (key, value * 2) } // 映射所有键值对 println(mappedMap.mkString(", ")) // 输出: one -> 2, two -> 4, three -> 6val filteredMap = map1.filter { case (key, value) => value > 1 } // 过滤值大于 1 的键值对 println(filteredMap.mkString(", ")) // 输出: two -> 2, three -> 3
-
转换操作
toList
:转换为List
toArray
:转换为数组
val list = map1.toList // 转换为 List val array = map1.toArray // 转换为数组
2. 可变集合(mutable.Map
)
可变 Map
位于 scala.collection.mutable
包中,可以动态地添加和删除键值对。
import scala.collection.mutable.Map// 创建一个空的 Map
val emptyMap: Map[String, Int] = Map()// 创建一个包含初始键值对的 Map
val map1: Map[String, Int] = Map("one" -> 1, "two" -> 2, "three" -> 3)
常见操作
- 添加键值对
+=
:添加一个键值对++=
:添加多个键值对
map1 += ("four" -> 4) // 添加一个键值对
map1 ++= Map("five" -> 5, "six" -> 6) // 添加多个键值对
- 删除键值对
-=
:删除一个键值对--=
:删除多个键值对
map1 -= "one" // 删除一个键值对
map1 --= List("two", "three") // 删除多个键值对
-
检查键是否存在
contains
:检查是否包含某个键
val containsOne = map1.contains("one") // 结果: false
-
获取值
apply
:通过键获取值get
:通过键获取值,返回Option
类型getOrElse
:通过键获取值,如果不存在则返回默认值
val valueOfFour = map1("four") // 获取键 "four" 对应的值
val optionValueOfFour = map1.get("four") // 获取键 "four" 对应的值,返回 Option
val defaultValue = map1.getOrElse("seven", 0) // 获取键 "seven" 对应的值,如果不存在则返回 0
-
遍历键值对
foreach
:遍历所有键值对keys
:获取所有键values
:获取所有值map
:映射所有键值对filter
:过滤键值对
map1.foreach { case (key, value) => println(s"$key -> $value") } // 遍历并打印所有键值对val keys = map1.keys // 获取所有键 val values = map1.values // 获取所有值val mappedMap = map1.map { case (key, value) => (key, value * 2) } // 映射所有键值对 println(mappedMap.mkString(", ")) // 输出: four -> 8, five -> 10, six -> 12val filteredMap = map1.filter { case (key, value) => value > 4 } // 过滤值大于 4 的键值对 println(filteredMap.mkString(", ")) // 输出: five -> 5, six -> 6
-
转换操作
toList
:转换为List
toArray
:转换为数组
val list = map1.toList // 转换为 List val array = map1.toArray // 转换为数组
相关文章:
Scala—Map用法详解
Scala—Map用法详解 在 Scala 中,Map 是一种键值对的集合,其中每个键都是唯一的。Scala 提供了两种类型的 Map:不可变 Map 和可变 Map。 1. 不可变集合(Map) 不可变 Map 是默认的 Map 实现,位于 scala.co…...
2024御网杯信息安全大赛个人赛wp(misc方向)
目录 一.信息安全大赛的通知二、编码转换1. 第一部分2. 第二部分3. 第三部分 三、1.txt四、buletooth 题目附件以及工具链接: 通过网盘分享的文件:御网杯附件 链接: https://pan.baidu.com/s/1LNA6Xz6eZodSV0Io9jGSZg 提取码: jay1 –来自百度网盘超级会…...
DeepSpeed 配置文件(DeepSpeed Configuration Files)详解:中英文解释
中文版 本文详细介绍 DeepSpeed 配置文件,结合 4 卡 3090 的实际使用场景,重点解释各个参数的含义,并提供应对爆显存的方案。 DeepSpeed 配置文件详解:从基础到实战 DeepSpeed 是用于加速大规模分布式训练的重要工具,…...
AI 助力开发新篇章:云开发 Copilot 深度体验与技术解析
本文 一、引言:技术浪潮中的个人视角1.1 AI 和低代码的崛起1.2 为什么选择云开发 Copilot? 二、云开发 Copilot 的核心功能解析2.1 自然语言驱动的低代码开发2.1.1 自然语言输入示例2.1.2 代码生成的模块化支持 2.2 实时预览与调整2.2.1 实时预览窗口功能…...
QTableWidget使用代理绘制分行显示
在这里插入代码片# 创建主窗口类: 使用 QTableWidget 作为核心控件。 设置表头及行列信息。 自定义代理: 继承 QStyledItemDelegate,实现代理模式。 重写 paint 和 sizeHint 方法,支持多行文本绘制。 设置行高以适应多行显示。 …...
Linux系统之fuser命令的基本使用
Linux系统之fuser命令的基本使用 一、fuser命令介绍二、fuser命令使用帮助2.1 help帮助信息2.1 基本语法①通用选项②文件/设备相关选项③网络相关选项④进程操作选项⑤其他选项 三、fuser命令的基本使用3.1 查找挂载点的进程3.2 查看指定设备进程信息3.3 查找监听特定端口的进…...
解决`-bash: ./configure:/bin/sh^M:解释器错误: 没有那个文件或目录`的问题
解决`-bash: ./configure:/bin/sh^M:解释器错误: 没有那个文件或目录`的问题 一、错误原因分析二、解决方法方法一:使用`dos2unix`工具方法二:使用`sed`命令方法三:使用`tr`命令方法四:在文本编辑器中转换方法五:在Windows系统中使用适当的工具三、预防措施四、总结在使…...
【时时三省】(C语言基础)结构体的声明
山不在高,有仙则名。水不在深,有龙则灵。 ----CSDN 时时三省 结构的基础知识 结构是一些值的集合,这些值称为成员变量。结构的每个成员可以是不同类型的变量。 数组是一组相同类型的元素的集合 结构体也是一些值的集合,结构的每…...
群聊前选择患者功能的实现
和普通群聊不同,开启一个图文会话聊天,必须先选择患者、团队、医生。 原来是集成到腾讯IM当中,现在需要单独写一个页面 原来的代码在这里: const handleShow () > {uni.navigateTo({url: /pageB/active-home/active-home})}…...
目标检测,图像分割,超分辨率重建
目标检测和图像分割 目标检测和图像分割是计算机视觉中的两个不同任务,它们的输出形式也有所不同。下面我将分别介绍这两个任务的输出。图像分割又可以分为:语义分割、实例分割、全景分割。 语义分割(Semantic Segmentation)&…...
关于 EKS Bottlerocket AMI 版本与 Karpenter 配置的说明
问题1: Bottlerocket AMI 版本问题 之前,后端团队发现在使用 Bottlerocket v1.26.2 AMI 版本时,存在某些问题。经过 Bottlerocket 团队调查,此行为是罕见的 race condition 导致的结果。 我们在环境中重现了此状况,并且关注到由于 kubelet device manager 的启动时间晚于 NVI…...
安全设备-日志审计-网络路由配置
1 网络设置 菜单项‘网络’‘网络设置’子项。进入网卡列表展示页面。点击操作列‘编辑’图标,可编辑对应网卡信息。 图11-1 网卡信息 设备接口的 GE0/1 接口IP:192.168.0.1子网掩码:255.255.255.0 图11-2 配置网卡 1 IP地址2 子网掩码3 主机DNS4 备份DNS 2 通…...
Linux服务器生成SSH 密钥对与 GitLab 仓库进行交互
目录 生成 SSH 密钥对 将公钥添加到 GitLab 测试 SSH 连接 生成 SSH 密钥对 在执行脚本的机器上打开终端,执行以下命令(假设使用默认的 RSA 算法,一路回车使用默认设置即可,也可以根据需要指定其他算法和参数)&…...
react 的路由功能
1. 安装依赖 pnpm add react-router-dom 2. 基本的路由设置(BrowserRouter) 在 main.tsx 入口文件中使用BrowserRouter组件来包裹整个应用。它会监听浏览器的 URL 变化。 import { StrictMode } from "react";import { createRoot } from …...
vscode python code runner执行乱码
打开vscode code runner插件配置,如图所示: 然后在setting.json修改运行python的默认命令: 将原来 替换成 "python":"set PYTHONIOENCODINGutf8 && python", 参考:Vscode——python环境输出中文乱…...
Element UI 打包探索【3】
目录 第九个命令 node build/bin/gen-cssfile gulp build --gulpfile packages/theme-chalk/gulpfile.js cp-cli packages/theme-chalk/lib lib/theme-chalk 至此,dist命令完成。 解释why Element UI 打包探索【1】里面的why Element UI 打包探索【2】里面…...
windows使用docker安装centos7
参考文章:docker容器安装CentOS7.9 需要指出来的步骤 2.5 安装常用工具及ssh服务 由于centos7不维护,需要更换镜像源才能正常使用yum install命令安装 更换镜像源文章:CentOS 7配置yum镜像源 2.9Xshell远程连接docke_centos7.9 文章没有指…...
写一个流程,前面的圆点和线,第一个圆上面没有线,最后一个圆下面没有线
上图 最近写类似于这种的还挺多的,记录一下css方法 遍历列表之后 <div class"item" v-for"(item,index) in recordList"> 加这样一个盒子 <div class"timeline"> <div class"line1" v-if"index ! 0&…...
Javascript Insights: Visualizing Var, Let, And Const In 2024
11/2024 出版 MP4 |视频:h264, 19201080 |音频:AAC,44.1 KHz 语言:英语 |大小: 2.96 GB |时长: 5 小时 34 分钟 为所有认真的 JavaScript 开发人员可视化与 VAR、LET、CONST 和 EXECUTON CONTE…...
【工具】AI 工具集整理推荐
ai工具集 我私人使用了一段时间,效果不错,有很多AI工具,可以提升工作的效率。...
如何通过终端连接无线网
1 先连接对方服务器 ssh root192.168.3.219 # root是用户名字 192.168.3.219是对方的ip地址2 开启 WiFi:输入sudo nmcli r wifi on,开启系统的无线网络功能 sudo nmcli r wifi on3 扫描附近的 WiFi 热点:执行sudo nmcli dev wifi&#x…...
elasticsearch报错fully-formed single-node cluster with cluster UUID
1.问题描述 k8s集群内部署的es中间件起不来,查看日志发现如下警告,节点发现功能开启,但是目前我是单节点服务,所以尝试编辑sts将节点发现功能去掉或者在部署时将你的sts的yaml文件和chart文件修改重新部署以去掉该功能 {"t…...
前端 vue3 + element-plus + ts 对话框示例
【父组件】:SampleInput.vue,局部代码片段 引入子组件 ApplyItemChooseDialog.vue,定义变量,用于渲染和显示标识 <script>片段代码 import ApplyItemChooseDialog from "/views/accept/ApplyItemChooseDialog.vue&q…...
南京移动“智慧+关怀”服务体系助力老年群体生活安全有保障
在数字化浪潮汹涌澎湃的当下,江苏移动南京分公司秉持“人民邮电为人民”的服务理念,推出一系列创新服务举措,为社区老年群体提供贴心、便捷的数字服务,让老人在享受科技发展成果的同时,感受到社会的温暖与关怀。 贴心…...
Elasticsearch 安全特性讲解与使用
Elasticsearch安全特性讲解与使用指南 1. Elasticsearch概览1.1 简介1.2 应用场景1.3 核心特性2. Elasticsearch安全特性2.1 安全性的重要性2.2 权限控制用户身份验证角色管理访问控制列表(ACL)2.3 数据加密数据传输加密数据静态加密2.4 审计日志2.5 IP筛选2.6 案例分析案例背景…...
第12章 手写Spring MVC
第十二章 手写Spring MVC 12.1 基本结构搭建 12.1.1 创建Maven模块 12.1.2 引入Servlet依赖 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XM…...
C#基础31-35
31.已知学生的记录由学号和学习成绩构成,N名学生的数据已存入student数组中。找出成绩最低的学生记录(假定最低成绩的记录是唯一的)并输出。 32.在键盘上任意输入一个字符串,该字符串全部由英文字母组成,把字符串中的最后一个字符的ASCII值右移4位后加最后第二个字符的ASCII…...
GPT相关的学术库——收藏更新自用
GOT-OCR2.0 General OCR Theory: Towards OCR-2.0 via a Unified End-to-end Model https://github.com/Ucas-HaoranWei/GOT-OCR2.0/tree/main ChatPaper 工具名称工具作用是否在线?在线预览备注ChatPaper通过ChatGPT实现对论文进行总结,帮助科研人进…...
速度革命:esbuild如何改变前端构建游戏 (1)
什么是 esbuild? esbuild 是一款基于 Go 语言开发的 JavaScript 构建打包工具,以其卓越的性能著称。相比传统的构建工具(如 Webpack),esbuild 在打包速度上有着显著的优势,能够将打包速度提升 10 到 100 倍…...
AR商业化的“AI转身”
AI会不会是AR厂商良药? 作者|周立青 编辑|杨舟 11月,国内“AR四小龙”之一的Rokid举办了新品发布会,在发布会的同步直播间,出现了一条不合时宜的“什么时候发去年的工资”的评论。 “公司确实没有给我们发2023年的十三薪和年终…...
Python 中的装饰器是什么?
装饰器是Python中一种非常强大的功能,它允许你在不修改原始函数代码的前提下,增加额外的功能或改变函数的行为。 装饰器本质上是一个接受函数作为参数的函数,并返回一个新的函数。 通过装饰器,我们可以轻松地实现诸如日志记录、…...
jupyter notebook的 markdown相关技巧
目录 1 先选择为markdown类型 2 开关技巧 2.1 运行markdown 2.2 退出markdown显示效果 2.3 注意点:一定要 先选择为markdown类型 3 一些设置技巧 3.1 数学公式 3.2 制表 3.3 目录和列表 3.4 设置各种字体效果:加粗,斜体&#x…...
oracle 创建只可以查询权限用户+sqldeveloper如何看到对应表
声明 申明部分是从其他csdn用户哪里复制的,只是自己操作后发现无法达到我最后的预期,所以关闭忘记是看的那篇了,如果有侵权请见谅,联系我删除谢谢。 好了,故事的开始是我最近删投产表了。没错职业黑点,清…...
化工行业 FMEA 与安全生产的关系
【大家好,我是唐Sun,唐Sun的唐,唐Sun的Sun。】 在化工行业这个充满复杂性和潜在危险的领域中,确保安全生产是至关重要的目标。失效模式及影响分析(FMEA)作为一种有效的风险管理工具,在保障化工行…...
前端node.js
一.什么是node.js 官网解释:Node.js 是一个开源的、跨平台的 JavaScript 运行时环境。 二.初步使用node.js 需要区分开的是node.js和javascript互通的只有console和定时器两个API. 三.Buffer Buffer 是一个类似于数组的 对象,用于表示固定长度的字节序列。Buffer…...
深度学习:GPT-2的MindSpore实践
GPT-2简介 GPT-2是一个由OpenAI于2019年提出的自回归语言模型。与GPT-1相比,仍基于Transformer Decoder架构,但是做出了一定改进。 模型规格上: GPT-1有117M参数,为下游微调任务提供预训练模型。 GPT-2显著增加了模型规模&…...
Java线程池详解:从基础到实践
Java线程池详解:从基础到实践 在现代多线程编程中,线程池是一个非常重要的工具。它能帮助开发者更高效地管理线程资源,避免频繁创建和销毁线程导致的性能损耗,并提供更灵活的任务调度机制。本文将详细讲解线程池相关知识…...
A*(A-star)算法
概述 A*(A-star)算法是一种在图中寻找从初始节点到目标节点最短路径的启发式搜索算法。它结合了Dijkstra算法的确保性(保证找到一条最短路径)和贪心算法的高效性(快速找到目标)。A*算法通过评估函数f(n) …...
计算机类大厂实习春招秋招开发算法面试问答练习题
计算机类大厂实习春招秋招开发算法面试问答练习题 下面有十个非常重要且常问,面试者却注意不到的问题,我们一个个来看,一个个来学。 线程创建到删除过程中,底层是怎么实现的 1.线程创建 线程创建是线程生命周期的起点。在操作系统中,线程可以通过多种方式创建,但无论哪…...
C++ 11重点总结1
智能指针 智能指针: C11引入了四种智能指针: auto_ptr(已弃用)、unique_ptr、shared_ptr和weak_ptr。智能指针可以更有效地管理堆内存,并避免常见的内存泄漏问题。 shared_ptr: 自定义删除器。 shared_ptr使用引用计数来管理它指向的对象的生命周期。多个shared_ptr实例可以指向…...
Java异常
目录 一、异常的层次结构 1.1、Throwable 1.2、Error(错误) 1.3、Exception(异常) 运行时异常 非运行时异常 (编译异常) 1.4、可查的异常(checked exceptions)和不可查的异常…...
《热带气象学报》
《热带气象学报》创刊于1984年,前身为《热带气象》,1993年更名为《热带气象学报》,是广东省气象局主管,中国气象局广州热带海洋气象研究所主办的中文学术期刊。 本刊坚持“热带气象”的办刊特色,主要刊登:…...
解决docker不加载 /etc/docker/daemon.json文件的问题
文章目录 问题起源解决方案问题反思 问题起源 如题,最近在ubuntu24.04-LTS-server安装docker时,安装成功后设置源来设置镜像。 设置完成功拉取镜像,我就关机下次使用。 但是当我重启发现呢,镜像都不在了,但是由于网络…...
数据结构(初阶7)---七大排序法(堆排序,快速排序,归并排序,希尔排序,冒泡排序,选择排序,插入排序)(详解)
排序 1.插入排序2.希尔排序3.冒泡排序4.选择排序(双头排序优化版)5.堆排序6.快速排序1). 双指针法2).前后指针法3).非递归法 7.归并排序1).递归版本(递归的回退就是归并)2).非递归版本(迭代版本) 计算机执行的最多的操作之一就有排序,排序是一项极其重要的技能 接下…...
题解 洛谷 Luogu P1182 数列分段 Section II 二分答案 C/C++
题目传送门: P1182 数列分段 Section II - 洛谷 | 计算机科学教育新生态https://www.luogu.com.cn/problem/P1182思路: 二分答案,每次以区间 [l, r] 中点 m 为每段和的阈值 判断在此前提下,划分段数是否不大于 M 是就记录答案…...
鸿蒙心路旅程:从实践到创新——开发者的深度技术分享
目录 1. 引言:成为HarmonyOS NEXT开发者的动机 2. 项目初始化与架构设计:从零开始的技术规划 2.1 DevEco Studio的配置与项目初始化 2.2 分层架构设计 3. 分布式应用设计:挑战与解决方案 3.1 分布式架构设计:分布式软总线 …...
elementUI非常规数据格式渲染复杂表格(副表头、合并单元格)
效果 数据源 前端代码 (展示以及表格处理/数据处理) 标签 <el-table :data"dataList" style"width: 100%" :span-method"objectSpanMethod"><template v-for"(item, index) in headers"><el-table-column prop"…...
mysl数据库(八)事务、三种读现象
事务、三种读现象 文章目录 事务、三种读现象一、事务介绍二、事务的使用三、三种读现象 一、事务介绍 事务是mysql的一种机制,一个事务里可以包含多条sql语句。执行事务相当于拍了一张快照,在事务执行完提交以前可以回滚至最初的状态,当然事…...
【DVWA】File Inclusion文件包含实战
安能有术无道有道无心,乐得仁心仁义正心行道。 1.File Inclusion(Low) 相关代码分析 <?php// The page we wish to display $file $_GET[ page ];?>可以看到,服务器端对page参数没有做任何的过滤跟检查。 服务器期望用户的操作是点击下面的…...
(免费送源码)计算机毕业设计原创定制:Java+ssm+JSP+Ajax SSM棕榈校园论坛的开发
摘要 随着计算机科学技术的高速发展,计算机成了人们日常生活的必需品,从而也带动了一系列与此相关产业,是人们的生活发生了翻天覆地的变化,而网络化的出现也在改变着人们传统的生活方式,包括工作,学习,社交…...