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

文章目录

哈希表

默认的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 dropRight

fold,reduce,sum
dropWhile,

forall,foreach
相关推荐
辰海Coding6 小时前
MiniSpring框架学习笔记-解决循环依赖的简化IoC容器
笔记·学习
晓梦林6 小时前
cp520靶场学习笔记
android·笔记·学习
心中有国也有家7 小时前
cann-recipes-infer:昇腾 NPU 推理的“菜谱集合”
经验分享·笔记·学习·算法
Upsy-Daisy7 小时前
AI Agent 项目学习笔记(八):Tool Calling 工具调用机制总览
人工智能·笔记·学习
绝知此事7 小时前
【算法突围 01】线性结构与哈希表:后端开发的收纳术
java·数据结构·算法·面试·jdk·散列表
LuminousCPP9 小时前
数据结构 - 线性表第四篇:C 语言通讯录优化升级全记录(踩坑 + 思考)
c语言·开发语言·数据结构·经验分享·笔记·学习
魔法阵维护师9 小时前
从零开发游戏需要学习的c#模块,第十四章(保存和加载)
学习·游戏·c#
_李小白10 小时前
【android opencv学习笔记】Day 17: 目标追踪(MeanShift)
android·opencv·学习
一只机电自动化菜鸟10 小时前
一建机电备考笔记(40) 建筑机电施工—排水管道施工(含考频+题型)
经验分享·笔记·学习·职场和发展·课程设计
2301_8187305610 小时前
numpy的学习(笔记)
学习·numpy