【发布时间】:2011-03-26 18:57:44
【问题描述】:
我希望能够在 Scala 中编写代码
val petMap = ImmutableMultiMap(Alice->Cat, Bob->Dog, Alice->Hamster)
底层的 Map[Owner,Set[Pet]] 应该同时具有 Map 和 Set 不可变。这是带有伴生对象的 ImmutibleMultiMap 的初稿:
import collection.{mutable,immutable}
class ImmutableMultiMap[K,V] extends immutable.HashMap[K,immutable.Set[V]]
object ImmutableMultiMap {
def apply[K,V](pairs: Tuple2[K,V]*): ImmutableMultiMap[K,V] = {
var m = new mutable.HashMap[K,mutable.Set[V]] with mutable.MultiMap[K,V]
for ((k,v) <- pairs) m.addBinding(k,v)
// How do I return the ImmutableMultiMap[K,V] corresponding to m here?
}
}
你能优雅地解决注释行吗?地图和集合都应该成为不可变的。
谢谢!
【问题讨论】:
-
这可能有助于作为如何将可变映射转换为不可变映射的示例:stackoverflow.com/questions/2817055/…
标签: scala map immutability scala-collections multimap