Scala 集合 Map

Scala 集合

Scala集合部分包括List Set Tuple Map
集合的操作需要掌握增、删、迭代的方法
该部分为集合中Map的说明


Map

Scala Map

创建不可修改的Map:
1
2
scala> val a = Map("a"->10,"b"->20)
a: scala.collection.immutable.Map[String,Int] = Map(a -> 10, b -> 20)
取值方法:
1
2
scala> a("a")
res1: Int = 10
创建可修改的Map:
1
2
scala> val b = scala.collection.mutable.Map("a"->10,"b"->20)
b: scala.collection.mutable.Map[String,Int] = Map(b -> 20, a -> 10)
修改方法:
1
2
3
4
scala> b("a") = 30

scala> b
res3: scala.collection.mutable.Map[String,Int] = Map(b -> 20, a -> 30)
为了避免key不存在报错,使用以下方法获取value值:
1
2
scala> b.getOrElse("c",30)
res0: Int = 30
增加key-value:
1
2
scala> b += ("d"->40)
res1: b.type = Map(b -> 20, d -> 40, a -> 10)
减少key-value 只需要减少key就可以了:
1
2
scala> b -= "b"
res5: b.type = Map(d -> 40, a -> 10)
确认key是否存在:
1
2
scala> b.contains("a")
res7: Boolean = true
Map的遍历:
1
val c = scala.collection.mutable.Map("a"->10,"b"->20)
遍历value1:
1
2
3
for ((k, v) <- c){
println(k + "-->" + v)
}
结果:
1
2
b-->20
a-->10
遍历value2:
1
2
3
for (k <- c.keySet){
println(k + "-->" + c.get(k))
}
结果:
1
2
b-->Some(20)
a-->Some(10)
获取所有key:
1
2
3
for (v <- c.values) {
println(v)
}
结果:
1
2
20
10
some的解释:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
scala> val a = Map(1 -> 2)
a: scala.collection.immutable.Map[Int,Int] = Map(1 -> 2)

scala> a.get(1)
res10: Option[Int] = Some(2)

scala> a.get(2)
res11: Option[Int] = None

scala> a.get(1).get
res12: Int = 2

scala> a.get(2).getOrElse(99)
res2: Int = 99