当前位置: 首页 > article >正文

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

文章目录

  • 哈希表
    • 定义哈希表
    • 添加元素
    • 删除元素
    • 合并集合
    • 访问元素
    • 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)

添加元素

+=

// 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)

删除元素

-=

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

对于可变的map,使用remove

合并集合

++

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(如果键不存在)。

println(map3.get("ldsx1"))
//Some(1)
println(map3.get("ldsx6"))
//None

//如果键不存在,Scala会抛出一个NoSuchElementException异常。
println(map3("ldsx1"))

keys,values

// 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

println(map2.isEmpty) //false

contains

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

size

无length方法使用size

println(map2.size) //2

filter

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

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

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

toSet,toList,toArray,toString

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


http://www.kler.cn/a/517974.html

相关文章:

  • tmux 介绍与使用
  • 攻防世界bad_python
  • js/ts数值计算精度丢失问题及解决方案
  • Spring Data JPA 实战:构建高性能数据访问层
  • 计算机视觉-卷积
  • 智能体0门槛开发
  • 吴恩达深度学习——深层神经网络
  • 关于deepin上运行Qt开发的程序
  • Spring Boot 集成 WebClient 实战教程 实现同步、异步请求处理以及响应式编程、响应式流、响应式Mono
  • 管理方法(15)-- 向华为学习根因分析
  • 小盒科技携手体验家,优化智能教育服务体验,打造在线教育新高度
  • seq2seq以及注意力机制
  • js小游戏---2048(附源代码)
  • 支持大功率输出高速频闪的图像处理用光源控制器
  • 亿坊软件前端命名规范
  • windows在命令行中切换盘符
  • springboot中DTO、VO、Entity相互转换
  • 低代码系统-产品架构案例介绍、得帆云(九)
  • 如何用VSCODE配置C++多文件编译
  • three.js+WebGL踩坑经验合集(2):3D场景被相机裁切后,被裁切的部分依然可以被鼠标碰撞检测得到(射线检测)
  • 豆包MarsCode:小C的类二进制拼图
  • ansible自动化运维实战--yaml的使用和配置(7)
  • http请求获取客户端ip
  • Flink(十一): DataStream API (八) Checkpointing
  • Arduino大师练成手册 -- 读取DS18B20
  • MacOS安装Docker battery-historian