当前位置:  开发笔记 > 编程语言 > 正文

Scala中的MultiMap

如何解决《Scala中的MultiMap》经验,为你挑选了2个好方法。

我正在尝试将这种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]]

这意味着一种MultiMap类型A&B是一种Map类型A&Set[B],或者在我看来.但是,编译器抱怨:

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  

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



1> sblundy..:

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



2> Calum..:

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

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

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

推荐阅读
低调pasta_730
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有