如果我使用 Scala Multimap,并且我想获取与键或空集关联的值,我是否必须编写以下内容?

multimap.getOrElse("key", new collection.mutable.HashSet())

似乎以下应该只是工作。空集似乎是一个很好的默认值。
multimap.getOrElse("key")

最佳答案

正如您所观察到的, MultiMap 特征不会做您想要的。但是,如果 Map 特别可变或不可变,您可以自己添加默认值。这是一个例子,

scala> val m = collection.mutable.Map(1 -> 2)
m: scala.collection.mutable.Map[Int,Int] = Map(1 -> 2)

scala> val m2 = m.withDefaultValue(42)
m2: scala.collection.mutable.Map[Int,Int] = Map(1 -> 2)

scala> m2(1)
res0: Int = 2

scala> m2(2)
res1: Int = 42

奇怪的是,如果 m 的类型是抽象的 collection.Map ,则上述方法将不起作用。源代码中的注释说这是由于差异问题。

关于Scala 多图 : get item or else empty set,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6961001/

10-12 00:41
查看更多