四:scala(4)映射和元组

2019-07-12  本文已影响0人  _兰陵笑笑生

一个经典的程序员名言是: “如果只能有一种数据结构,那就用哈希表吧。
”哈 希表一一-或者更笼统地说,映射一一是最灵活多变的数据结构之一。

1.Scala有十分易用的语法来创建、查询和遍历映射。
2.你需要从可变的和不可变的映射中做出选择。
3.默认情况下,你得到的是一个哈希映射,不过你也可以指明要树形映射。

创建映射

不可变的集合

val scores =Map (”Alice”-> 10,”Bob'’-> 3 ,”C工ndy”-> 8)

可变的集合

val scores = scala.coll ection.mutable.Map (”Alice”-> 10,”Bob'’-> 3, ”Cindy”-> 8) 

获取映射中的值

val bobsScore =scores (”Bob”)
//类似于Java中的scores.get (”Bob”)

如果映射并不包含请求中使用的键,则会抛出异常。
要检查映射中是否有某个指定的键,可以用contains方法

val bobsScore = if (scores.conta工ns (”Bob”)) scores (” Bob”) else 0 

可以

val bobsScore = scores.getOrElse ( ”Bob”, 。) 

最后,映射 . get(键)这样的调用返回一个Option对象,
要么是Some (键对应的 值),要么是None。

更新

scores (”Bob”) = 10
 //更新键”Bob”对应的位(假定scores是可变的)
scores (”Fred") = 7
// 增加新的键/位对偶到 scores (假定它是可变的)
//  或者,你也可以用+=操作来添加多个关系:

scores += (”Bob”-> 10,”Fred”-> 7) 

scores -= ” Alice”  //移除

不可变的映射可以通过创建新的集合来创建

迭代映射

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

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

要反转一个映射一一即交换键和值的位置,可以用
for ( (k, v)←映射) yield (v, k)

己排序映射

val scores = scala .collection .mutable.SortedMap (”Al工ce " - > 10,
” Fred" - > 7, ” Bob” - > 3 , ”C工ndy” -> 8)

上一篇下一篇

猜你喜欢

热点阅读