scala之map

2020-01-08  本文已影响0人  虚心若愚_b5c1

基本介绍

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)
}
上一篇 下一篇

猜你喜欢

热点阅读