首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Scala中的MultiMap

Scala中的MultiMap
EN

Stack Overflow用户
提问于 2008-09-08 18:32:59
回答 2查看 4.8K关注 0票数 18

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

代码语言:javascript
复制
val children:MultiMap[Integer, TreeNode] = 
    new HashMap[Integer, Set[TreeNode]] with MultiMap[Integer, TreeNode]

MultiMap特征的定义如下:

代码语言:javascript
复制
trait MultiMap[A, B] extends Map[A, Set[B]]

这意味着A & B类型的MultiMap就是A & Set[B]类型的Map,至少在我看来是这样。但是,编译器会抱怨:

代码语言:javascript
复制
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  

似乎泛型又把我给绊倒了。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2008-09-08 18:59:25

我不得不导入scala.collection.mutable.Set。似乎编译器认为HashMap[Integer, Set[TreeNode]]中的集合是scala.collection.Set。MultiMap定义中的集合为scala.collection.mutable.Set.

票数 26
EN

Stack Overflow用户

发布于 2008-09-15 16:24:13

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

无论如何,如果您导入了scala.collection._,您可能会将您的HashMap类型编写为:

代码语言:javascript
复制
new HashMap[ Integer, mutable.Set[ TreeNode ] ]
票数 12
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50373

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档