繁体   English   中英

Scala中的MultiMap

[英]MultiMap in Scala

我正在尝试将MultiMap特征与HashMap混合,如下所示:

val children:MultiMap[Integer, TreeNode] = 
    new HashMap[Integer, Set[TreeNode]] with MultiMap[Integer, TreeNode]

MultiMap特征的定义是:

trait MultiMap[A, B] extends Map[A, Set[B]]

这意味着类型ABMultiMapASet[B]类型的Map ,或者在我看来。 但是,编译器抱怨:

C:\...\TestTreeDataModel.scala:87: error: illegal inheritance;   template $anon inherits different type instances of trait Map:   scala.collection.mutable.Map[Integer,scala.collection.mutable.Set[package.TreeNode]] and scala.collection.mutable.Map[Integer,Set[package.TreeNode]]  
    new HashMap[Integer, Set[TreeNode]] with MultiMap[Integer, TreeNode]  
    ^ one error found  

仿制药似乎再次绊倒了我。

我必须导入scala.collection.mutable.Set 似乎编译器认为HashMap[Integer, Set[TreeNode]]的Set HashMap[Integer, Set[TreeNode]]scala.collection.Set MultiMap def中的Set是scala.collection. mutable .Set

这可能很烦人,Scala集合中的名称重载是它的一大弱点。

对于它的价值,如果你导入scala.collection._ ,你可能已经编写了你的HashMap类型:

new HashMap[ Integer, mutable.Set[ TreeNode ] ]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM