Scala Map

Python中的Dict

字典是一组键(key)和值(value)的组合,通过键(key)进行查找, 没有顺序 , 使用大括号”{}” !key不允许重复 !key不可变,value可变

Scala中的Map

无序(有序看第7点),有可变和不可变两种,

1.值不可变的Map(不常用)
val info = Map("czm" -> 10, "CZM" -> 21)        //格式1
val info = Map(("czm" , 10), ("CZM" , 21))      //格式2(更体现tuple作为存储单元)
res0: scala.collection.immutable.Map[String,Int] = Map(czm -> 10, CZM -> 21)

//修改值** + - **,并不是改
info("czm") = 29            //错误
info + ("czm" -> 100)       //这种方式只是生成了一个新的不可变的Map原值并未改变
info - "czm"                //这种方式只是生成了一个新的不可变的Map原值并未改变
2.值可变的Map
val info = scala.collection.mutable.Map("czm" -> 10, "CZM" -> 21)       //格式1
val info = scala.collection.mutable.Map(("czm" , 10), ("CZM" , 21))     //格式2(更体现tuple作为存储单元)
res0: scala.collection.mutable.Map[String,Int] = Map(czm -> 10, CZM -> 21)

//修改值** += -= **
info("czm") = 29    //正确,若Key不存在,则增加
//一次增加多个
info += ("asd" -> 123,"aer" -> 122)
//移除
info -= "czm"
info -= ("czm","asd")   //即使移除不存在的元素,不会报错
3.创建空Map
//HashMap是Map的实现类,不能直接实例化Map(抽象类)**跟JAVA一样**
val info = scala.collection.mutable.HashMap[String,Int]()
4.取值,使用()

在取值的时候,访问一个不存在的Key会报错,JAVA 返回Null,Python dict也会报错

//方法1
if (info.contains("nukl")) info("nukl") else 0

//方法2
info.getOrElse("nukl",0)
5.增,改
//对于存在的Key,赋值即修改
//对于不存在的Key,赋值即增加
6.遍历
//增强for循环
for ((key, value) <- info) {
  println(key + ":" + value)
}

//只要Key,也可以用keySet
for (key <- info.keys) {
  println(key + ":" + info(key))
}

//只要value
for (value <- info.values) {
  println(value)
}
7.有序的Map
//Map的另一个实现类SortedMap,根据Key排序
var info = scala.collection.mutable.SortedMap("as" -> 12, "nSD" -> 23, "casd" -> 123)
info: scala.collection.mutable.SortedMap[String,Int] = Map(as -> 12, casd -> 123, nSD -> 23)

//Map的另一个实现类LinkedHashMap,记住插入的顺序
var info = scala.collection.mutable.LinkedHashMap[String,Int]()

转载于:https://www.cnblogs.com/cenzhongman/p/7454102.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值