Scala中的Map和Java类似,也是一个散列表,它存储的内容也是键值对(key-value)映射,Scala中不可变的Map是有序的,可变的Map是无序的。
创建不可变Map
val map=Map("a"->1,"b"->2,"c"->3)
或者
val map=Map(("a",1),("b",2),("c",3))
更或者混合使用
val map=Map(("a",1),"b"->2,"c"->3)
只有是二元元组就可以
。
支持的Api
scala> map.
+ contains foldLeft iterator product splitAt toStream
++ copyToArray foldRight keySet reduce stringPrefix toString
++: copyToBuffer forall keys reduceLeft sum toTraversable
- count foreach keysIterator reduceLeftOption tail toVector
-- default genericBuilder last reduceOption tails transform
/: drop get lastOption reduceRight take transpose
:\ dropRight getOrElse lift reduceRightOption takeRight unzip
WithFilter dropWhile groupBy map repr takeWhile unzip3
addString empty grouped mapValues runWith to updated
aggregate equals hasDefiniteSize max sameElements toArray values
andThen exists hashCode maxBy scan toBuffer valuesIterator
apply filter head min scanLeft toIndexedSeq view
applyOrElse filterKeys headOption minBy scanRight toIterable withDefault
canEqual filterNot init mkString seq toIterator withDefaultValue
collect find inits nonEmpty size toList withFilter
collectFirst flatMap isDefinedAt orElse slice toMap zip
companion flatten isEmpty par sliding toSeq zipAll
compose fold isTraversableAgain partition span toSet
+
添加一个元素,返回一个新的map
@Test
def map(): Unit ={
val map=Map(("a",1),"b"->2,"c"->3)
val newMap=map.+("d"->4)
println(newMap)
}
Map(a -> 1, b -> 2, c -> 3, d -> 4)
++
添加一组map
@Test
def map(): Unit ={
val map=Map(("a",1),"b"->2,"c"->3)
val newMap=map.++(List("d"->4,"e"->5,"f"->6))
println(newMap)
}
Map(e -> 5, f -> 6, a -> 1, b -> 2, c -> 3, d -> 4)
++:
添加一组map
@Test
def map(): Unit ={
val map=Map(("a",1),"b"->2,"c"->3)
val newMap=map.++:(List("d"->4,"e"->5,"f"->6))
println(newMap)
}
结果和++
一样
Map(e -> 5, f -> 6, a -> 1, b -> 2, c -> 3, d -> 4)
-
根据key
删除元素
@Test
def map(): Unit ={
val map=Map(("a",1),"b"->2,"c"->3)
val newMap=map.-("a")
println(newMap)
}
Map(b -> 2, c -> 3)
--
根据一组key
删除元素
@Test
def map(): Unit ={
val map=Map(("a",1),"b"->2,"c"->3)
val newMap=map.--(List("a","c"))
println(newMap)
}
Map(b -> 2)
map
获取元素,key不存在直接报错
@Test
def map1(): Unit ={
val map=Map(("a",1),"b"->2,"c"->3)
val value=map("a")
println(value)
}
1
@Test
def map1(): Unit ={
val map=Map(("a",1),"b"->2,"c"->3)
val value=map("d")
println(value)
}
java.util.NoSuchElementException: key not found: d
get
获取元素,返回的是一个Option
@Test
def map1(): Unit ={
val map=Map(("a",1),"b"->2,"c"->3)
val value=map.get("a")
println(value)
}
Some(1)
若要读取数字1,需要再调用一个get
@Test
def map1(): Unit ={
val map=Map(("a",1),"b"->2,"c"->3)
val value=map.get("a").get
println(value)
}
`
若无数据返回Node
@Test
def map1(): Unit ={
val map=Map(("a",1),"b"->2,"c"->3)
val value=map.get("d")
println(value)
}
None
getOrElse
若没数据,可以指定一个默认值
@Test
def map1(): Unit ={
val map=Map(("a",1),"b"->2,"c"->3)
val value=map.getOrElse("d",4)
println(value)
}
4
updated
修改元素
@Test
def map1(): Unit ={
val map=Map(("a",1),"b"->2,"c"->3)
val value=map.updated("a",100)
println(value)
}
Map(a -> 100, b -> 2, c -> 3)
keys
获取map中所有的key
@Test
def map1(): Unit ={
val map=Map(("a",1),"b"->2,"c"->3)
val value=map.keys
println(value)
}
Set(a, b, c)
本文系转载,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文系转载,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有