Scala集合之Map

在这里插入图片描述
Scala 集合

MAP
初始化
定义 Map 时,需要为键值对定义类型

 val t1="a"->1
val t1: (String, Int) = (a,1)

scala> val t2=("b",2)
val t2: (String, Int) = (b,2)

scala> val t3=Tuple2("c",3)
val t3: (String, Int) = (c,3)

scala> val m=Map(t1,t2,t3)
val m: scala.collection.immutable.Map[String,Int] = Map(a -> 1, b -> 2, c -> 3)

查找值

  • Get
    Get 方法返回Option对象,如果见存在于Map对象中,返回Some(value) 值,否则返回None
scala> m.get("a")
val res1: Option[Int] = Some(1)

scala> m.get("z")
val res2: Option[Int] = None
  • getorElse
    提供一个默认值
scala> m.getOrElse("z",100)
val res5: Int = 100

scala> m.getOrElse("a",100)
val res6: Int = 1
  • Apply
    Apply 方法也提供建做参数,返回键对应的值,类似于getOrElse,但是它不需要主动提供默认值
scala> m.apply("a")
val res7: Int = 1

//处理键不存在的情况,默认default

scala> m.apply("z")
java.util.NoSuchElementException: key not found: z
  at scala.collection.immutable.Map$Map2.apply(Map.scala:298)
  ... 32 elided
  • withDefault
    提供了一个默认方法
  • withDefaultValue
    提供了一个默认值
scala> val m2= m.withDefaultValue(-1)
val m2: scala.collection.immutable.Map[String,Int] = Map(a -> 1, b -> 1)

scala> m2.apply("z")
val res20: Int = -1


scala> val m3=m.withDefault(_.charAt(0)-'a')
val m3: scala.collection.immutable.Map[String,Int] = Map(a -> 1, b -> 1)
  • getOrElseUpdate
    注意
    替换default 方法,不会影响get、contains、iterator、keys原有的逻辑。例如,get不存在的键依然返回None
    包含某个键
- Contains
- isDefinedAt
scala> m.contains("a")
val res34: Boolean = true

scala> m.contains("z")
val res35: Boolean = false

scala> m.isDefinedAt("a")
val res38: Boolean = true

scala> m.isDefinedAt("z")
val res39: Boolean = false

增加新的键值对

    • 增加一个或者多个键值对,返回新的Map对象
scala> m+("d"->4)
val res42: scala.collection.immutable.Map[String,Int] = Map(a -> 1, b -> 1, d -> 4)
scala> m+("e"->5,"f"->6)
        ^
       warning: method + in trait MapOps is deprecated (since 2.13.0): Use ++ with an explicit collection argument instead of + with varargs
val res46: scala.collection.immutable.Map[String,Int] = Map(a -> 1, b -> 1, e -> 5, f -> 6)
  • ++ 增加键值对集合,实现批量增加, 如果键已经存在于Map对象中,等同于更新操作
scala> m++Seq("d"->4,"h"->8)
val res43: scala.collection.immutable.Map[String,Int] = Map(a -> 1, b -> 1, d -> 4, h -> 8)
  • ++= 可变Map
  • += 可变Map
  • Put 可变Map
scala> m+=("d"->4)
        ^
       error: value += is not a member of scala.collection.immutable.Map[String,Int]
         Expression does not convert to assignment because receiver is not assignable.

删除键

 - 
 --
 -=
 --=
 remove

转换

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值