如果我使用 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/