黑猴子的家:Scala 映射 Map

这个地方的学习,就类比Java的map集合学习即可。

1、构造不可变Map映射

val map1 = Map("Alice" -> 10, "Bob" -> 20, "Kotlin" -> 30)

尖叫提示:List和Map默认使用不可变集合,不可变是长度不能变,值也不能改变,Array的不可变是长度不能改变,元素是可以改变的

2、构造可变Map映射

import scala.collection.mutable
val map1 = mutable.Map("Alex" -> 10,"Bob" -> 20,"Kotlin" -> 30)
println(map1)

3、空的HashMap映射

val map3 = new scala.collection.mutable.HashMap[String, Int]

4、对偶元组

val map4 = Map(("Alice", 10), ("Bob", 20), ("Kotlin", 30))

5、取值

如果映射中没有值,则会抛出异常,使用contains方法检查是否存在key。如果通过 映射.get(键) 这样的调用返回一个Option对象,要么是Some,要么是None。

val maybeInt1 = map1.get("Alice")//建议使用get方法得到map中的元素
val maybeInt2 = map1("Alice")
println(maybeInt1)
println(maybeInt2)

6、更新值

//更新值
map1("Alex") = 99
println(map1)

//有key就更新,没有key就添加
map1 += ("Alex" -> 24,"Faker" -> 45)
println(map1)

//删除key
map1 -= ("Bob","Kotlin")
println(map1)

//类似于 +=
val map5 = map1 + ("AAA" -> 10, "BBB" -> 20)
println(map5)

7、map 和 collect 区别

此处知识点,请简单了解体会,会在模式匹配中详细讲解
这里面的map和collect 是函数名,和Map集合映射不是一回事

println("\n map 和 collect 区别----collect忽略匹配不上的----------------")
val map1 = Map("Alice" -> 20,"Bob" -> 30)
map1.map{case(_,age) => println(age+1)}
map1.map(a => a._2+1)
map1.collect{
   case (_,age) => println(age+1)
}

// List(1,2,3,4,"heihei") map{case i:Int => println(i+1)}
List(1,2,3,4,"heihei") collect {case i:Int => println(i+1)}

转载于:https://www.jianshu.com/p/d66033977a10

猜你喜欢

转载自blog.csdn.net/weixin_34080571/article/details/91182439