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
相关推荐
西岸行者11 天前
学习笔记:SKILLS 能帮助更好的vibe coding
笔记·学习
悠哉悠哉愿意11 天前
【单片机学习笔记】串口、超声波、NE555的同时使用
笔记·单片机·学习
别催小唐敲代码12 天前
嵌入式学习路线
学习
毛小茛12 天前
计算机系统概论——校验码
学习
babe小鑫12 天前
大专经济信息管理专业学习数据分析的必要性
学习·数据挖掘·数据分析
winfreedoms12 天前
ROS2知识大白话
笔记·学习·ros2
在这habit之下12 天前
Linux Virtual Server(LVS)学习总结
linux·学习·lvs
我想我不够好。12 天前
2026.2.25监控学习
学习
im_AMBER12 天前
Leetcode 127 删除有序数组中的重复项 | 删除有序数组中的重复项 II
数据结构·学习·算法·leetcode
CodeJourney_J12 天前
从“Hello World“ 开始 C++
c语言·c++·学习