scala基础学习(数据类型)-哈希表

news/2025/1/30 15:11:46/

文章目录

  • 哈希表
    • 定义哈希表
    • 添加元素
    • 删除元素
    • 合并集合
    • 访问元素
    • keys,values
    • isEmpty
    • contains
    • size
    • filter
    • filterKeys
    • toSet,toList,toArray,toString
    • 其余常用方法

哈希表

默认的map类型也是immutable中的不可变类型,返回新哈希表

定义哈希表

// 默认的map类型也是immutable中的不可变类型
val map1:Map[String,Int] = Map("ldsx1"->1,"ldsx2"->2)

添加元素

+=

scala">// map添加元素,返回新map,这是使用了var,变量一直重新指向
var map2:Map[String,Int] = Map()
map2 += ("LDSX1"-> 1)
map2 += ("LDSX2"->2)
map2 += ("LDSX3"->3)
//更新了LDSX3的值
map2 += ("LDSX3"->4)
println(map2)
//Map(LDSX1 -> 1, LDSX2 -> 2, LDSX3 -> 4)

删除元素

-=

scala">map2 -=("LDSX1")
println(map2)
//Map(LDSX2 -> 2, LDSX3 -> 4)

对于可变的map,使用remove

合并集合

++

scala">val map3:Map[String,Int] = Map("ldsx1"->1,"ldsx2"->2)
val map4:Map[String,Int] = Map("ldsx1"->3,"ldsx3"->3)
println(map3++map4)
//Map(ldsx1 -> 3, ldsx2 -> 2, ldsx3 -> 3)

访问元素

get这个方法返回一个Option类型,如果键存在,则返回Some(value),其中value是与键"ldsx1"对应的值,如果键不存在,则返回None。
这种方式更安全,因为它强制你处理键可能不存在的情况。
例如,如果你有一个 Map,并且你尝试获取一个键对应的值,结果可能会是 Some(value)(如果键存在)或 None(如果键不存在)。

scala">println(map3.get("ldsx1"))
//Some(1)
println(map3.get("ldsx6"))
//None//如果键不存在,Scala会抛出一个NoSuchElementException异常。
println(map3("ldsx1"))

keys,values

scala">// Map(LDSX2 -> 2, LDSX3 -> 4)
println(map2.keys,map2.values)
//(Set(LDSX2, LDSX3),MapLike(2, 4))// 获取
map3.keys.foreach(i =>{print("Key = " + i)println(" Value = " + map3(i))}
)// 解包可用双变量
for ((k,v) <- map3){println(k,v)
}
println(map3)

isEmpty

scala">println(map2.isEmpty) //false

contains

scala">println(map2.contains("ldsxaa")) //false

size

无length方法使用size

scala">println(map2.size) //2

filter

其中_代表集合中的每个元素,即键值对。_._1访问元组的第一个元素(键),然后调用.length方法来检查键的长度是否大于2

scala">val map6 = Map("one" -> 1, "two" -> 2, "three" -> 3, "four" -> 4)
val filteredMap3 = map6.filter(_._1.length >3)val filteredMap3 = map6.filter{case (a:String,b:Int)=>a.length>b}

filterKeys

scala">val map6 = Map("one" -> 1, "two" -> 2, "three" -> 3, "four" -> 4)
// 过滤出键长度大于2的键值对
val filteredMap = map6.filterKeys( _.length > 2)

toSet,toList,toArray,toString

scala">println(map3.toSet)
println(map3.toList)
println(map3.toArray)
println(map3.mkString(","))//Set((ldsx1,1), (ldsx2,2))
//List((ldsx1,1), (ldsx2,2))
//[Lscala.Tuple2;@58651fd0
//ldsx1 -> 1,ldsx2 -> 2

其余常用方法

方法同其余容器类型数据

head,last      
take,takeRight init,tail
drop dropRightfold,reduce,sum
dropWhile,forall,foreach

http://www.ppmy.cn/news/1567914.html

相关文章

EtherCAT主站IGH-- 21 -- IGH之fsm_reboot.h/c文件解析

EtherCAT主站IGH-- 21 -- IGH之fsm_reboot.h/c文件解析 0 预览一 该文件功能`fsm_reboot.c` 文件功能函数预览二 函数功能介绍`fsm_reboot.c` 中主要函数的作用1. `ec_fsm_reboot_init`2. `ec_fsm_reboot_clear`3. `ec_fsm_reboot_single`4. `ec_fsm_reboot_all`5. `ec_fsm_reb…

基于PostgreSQL的自然语义解析电子病历编程实践与探索(下)

五、数据导入与存储 5.1 使用 Python 连接 PostgreSQL 数据库 在 Python 中,使用 psycopg2 库可以方便地连接 PostgreSQL 数据库,实现数据的导入与存储操作。psycopg2 是一个流行的 PostgreSQL 适配器,它提供了丰富的功能和高效的性能,能够满足电子病历数据处理的需求。 …

字节跳动自研HTTP开源框架Hertz简介附使用示例

字节跳动自研 HTTP 框架 Hertz Hertz 是字节跳动自研的高性能 HTTP 框架&#xff0c;专为高并发、低延迟的场景设计。它基于 Go 语言开发&#xff0c;结合了字节跳动在微服务架构中的实践经验&#xff0c;旨在提供更高效的 HTTP 服务开发体验。 1. 背景介绍 随着字节跳动业务…

OSCP:发送钓鱼电子邮件执行客户端攻击

概述 在渗透测试领域&#xff0c;钓鱼攻击是一种有效的客户端攻击手段&#xff0c;尤其在目标用户缺乏安全意识或系统存在未修复漏洞时&#xff0c;成功率较高。针对Windows平台&#xff0c;滥用Windows库文件&#xff08;.Library-ms&#xff09;是一种技术性较强但易于实施的…

Linux学习笔记——用户管理

一、用户管理命令 useradd #用户增加命令 usermod #用户修改命令 passwd #密码修改命令 userdel #用户删除命令 su #用户提权命令 1、useradd命令&#xff08;加用户&#xff09;&#xff1a; 创建并设置用户信息&#xff0c;使用us…

剑指 Offer II 007. 数组中和为 0 的三个数

comments: true edit_url: https://github.com/doocs/leetcode/edit/main/lcof2/%E5%89%91%E6%8C%87%20Offer%20II%20007.%20%E6%95%B0%E7%BB%84%E4%B8%AD%E5%92%8C%E4%B8%BA%200%20%E7%9A%84%E4%B8%89%E4%B8%AA%E6%95%B0/README.md 剑指 Offer II 007. 数组中和为 0 的三个数 …

Ubuntu二进制部署K8S 1.29.2

本机说明 本版本非高可用&#xff0c;单Master&#xff0c;以及一个Node 新装的 ubuntu 22.04k8s 1.29.3使用该文档请使用批量替换 192.168.44.141这个IP&#xff0c;其余照着复制粘贴就可以成功需要手动 设置一个 固定DNS&#xff0c;我这里设置的是 8.8.8.8不然coredns无法…

DeepSeek部署教程(基于Ollama)

虽说在过年&#xff0c;但不能忘了学习。这几天科技圈最火的莫过于deepseek&#xff0c;我抽空也学习一下deepseek的部署过程&#xff0c;主要还是因为官方服务已经彻底瘫了[手动狗头]。 1、下载Ollama并安装 https://github.com/ollama/ollama/releases/latest/download/Oll…