Map 集合
Scala中的Map和Java类似,也是一个散列表,它存储的内容也是键值对(key-value)映射,Scala中不可变的Map是有序的,可变的Map是无序的。
不可变Map
创建不可变Map
代码语言:javascript复制val map=Map("a"->1,"b"->2,"c"->3)
或者
代码语言:javascript复制val map=Map(("a",1),("b",2),("c",3))
更或者混合使用
val map=Map(("a",1),"b"->2,"c"->3)
只有是二元元组就可以
。
支持的Api
代码语言:javascript复制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)
}
代码语言:javascript复制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)
}
代码语言:javascript复制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)
}
代码语言:javascript复制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)
}
代码语言:javascript复制Map(b -> 2)
map
获取元素,key不存在直接报错
@Test
def map1(): Unit ={
val map=Map(("a",1),"b"->2,"c"->3)
val value=map("a")
println(value)
}
代码语言:javascript复制1
代码语言:javascript复制 @Test
def map1(): Unit ={
val map=Map(("a",1),"b"->2,"c"->3)
val value=map("d")
println(value)
}
代码语言:javascript复制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)
}
代码语言:javascript复制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)
}
代码语言:javascript复制`
若无数据返回Node
@Test
def map1(): Unit ={
val map=Map(("a",1),"b"->2,"c"->3)
val value=map.get("d")
println(value)
}
代码语言:javascript复制None
getOrElse
若没数据,可以指定一个默认值
@Test
def map1(): Unit ={
val map=Map(("a",1),"b"->2,"c"->3)
val value=map.getOrElse("d",4)
println(value)
}
代码语言:javascript复制4
updated
修改元素
@Test
def map1(): Unit ={
val map=Map(("a",1),"b"->2,"c"->3)
val value=map.updated("a",100)
println(value)
}
代码语言:javascript复制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)
}
代码语言:javascript复制Set(a, b, c)