Scala菜鸟的进阶之路之映射和元组二

更新映射中的值

1、在可变映射中,你可以更新某个映射的值,或者添加一个新的映射关系,做法是在 = 号的左侧使用 ():


Scala菜鸟的进阶之路之映射和元组二_第1张图片


可以用 += 操作来添加多个关系


要移除某个键和对应的值,使用 -= 操作符

2、你不能更新一个不可变的映射,但你可以做一些同样有用的操作,获取一个包含所需要更新的映射的新映射:


新映射除了可以在原来映射的基础上添加映射,还可以更新已经存在的映射

迭代映射

1、如下这段超简单的循环可遍历映射中所有的键/值对偶:

for ((k, v) <- 映射)  处理 k 和 v

2、如果出于某种原因,你只需要访问键或值,像java一样,则可以用keySet 和 values 方法。 values 方法返回一个 Iterable ,你可以在for循环当中使用这个Iterable



Scala菜鸟的进阶之路之映射和元组二_第2张图片

反转映射:


Scala菜鸟的进阶之路之映射和元组二_第3张图片

已排序的映射

1、在操作映射时,你需要选定一个实现——一个哈希表或者一个平衡树。

默认情况下,Scala给的是哈希表。由于对使用的键没有很好的哈希函数,或者需要顺序地访问所有的键,因此你可能会想要一个树形映射。

2、要得到一个不可变的树形映射而不是哈希映射的话,可以用:


Scala菜鸟的进阶之路之映射和元组二_第4张图片

3、很可惜,Scala(2.9)并没有可变的树形映射,如果你需要,最近的选择是使用Java的TreeMap

4、如果要按插入顺序访问所有键,使用LinkedHashMap,例如:


与Java的互操作

1、如果你通过方法调用得到了一个Java映射,你可能想把它转换为一个Scala映射,以便使用更便捷的Scala映射API。

2、举例:


Scala菜鸟的进阶之路之映射和元组二_第5张图片

3、反过来讲,要把Scala映射传递给预期Java映射的方法,提供相反的隐式转换即可


Scala菜鸟的进阶之路之映射和元组二_第6张图片

4、除此之外,你还可以得到从java.util.Properties到Map[String,String]的转换

Scala菜鸟的进阶之路之映射和元组二_第7张图片

你可能感兴趣的:(Scala菜鸟的进阶之路之映射和元组二)