基本介绍
scala中的Map和java类似,也是一个散列表,它存储的内容也是键值对,scala中不可变的map是有序的,可变的map是无序的,一般都是用可变的scala.collection.motable.Map
构建Map
1. 不可变map
// 1.默认是不可变的
// 2.key-value,支持Any
// 3.在Map的底层,每对key-value是Tuple2
val map01 = Map("zhangsan"->10, "lisi"->20)
// 也可以写成这样
val map02 = Map(("A", 10), ("lisi", 20))
2. 可变的map
// 1.可变的map
// 2.意味着可以添加删除
val map03 = mutable.Map("zhangsan"->10, "lisi"->20)
3. 创建空的map
// 创建一个空的map
val map04 = new mutable.HashMap[String, Int]
4. 对偶元组
// 对偶元组
val map05 = mutable.Map(("a", 10), ("b", "11"))
取值
方式一:map(key)
// 取值
// 如果key存在,则返回对应的值
// 如果key不存在,则抛出异常【java.util.NoSuchElementException】
val result = map05("a")
方式二:map.get(key).get
// 如果key存在,则会返回some(value),然后调用some(value).get就能取出
// 如果key不存在,则会返回none
val result02 = map05.get("a").get
方式三:map.getOrElse()
val result03 = map05.getOrElse("c", "。。。。")
contain
使用contain方法检查key是否存在
// 如果key存在,返回true,否则返回false
if(map05.contains("a")){
println(map05("a"))
}else
println("不存在")
}
修改、添加、删除
map是可变的,才能修改,否则报错
如果key存在,则修改对应的值,key不存在,等于添加一个key-value
添加单个元素
val map05 = mutable.Map(("a", 10), ("b", "11"))
// key存在,则更新
map05("a") = 19
// key不存在,则添加
map05("c") = 100
// 如果key存在,则会覆盖
map05 += ("a"-> 100)
// 不存在,则会添加
map05 += ("e"-> 101)
// 添加多个元素
map05 += ("f"-> 102, "g"->103)
// 删除元素,可以写多个,如果key存在,则删除,如果可以不存在,也不会报错
map05 -= ("f", "g")
map的遍历
// 第一种方式:取出k,v
for((k,v) <- map05){
println("k:"+k+" "+"v:"+v)
}
// 第二种方式:取出key
for (k <- map05.keys){
println(k)
}
// 第二种方式:取出value
for(v<-map05.values){
println(v)
}
// 这样取出方式,类型是tuple2
for(v<- map05){
println(v._1+" "+v._2)
}
网友评论