提问人:robinki 提问时间:12/15/2016 更新时间:12/15/2016 访问量:597
如何转换可变.映射到可变。Scala 中的 HashMap?
How to convert mutable.Map to mutable.HashMap in Scala?
问:
我正在用 Scala 扩展 Sparks,进行一些实验。其中一部分是定义方法。AccumulableParam[mutable.HashMap[Int,Long], Int]
def addInPlace(t1: mutable.HashMap[Int,Long], t2: mutable.HashMap[Int,Long]): mutable.HashMap[Int,Long]
我想做什么:
import scala.collection.mutable.HashMap
def addInPlace(t1: mutable.HashMap[Int,Long], t2: mutable.HashMap[Int,Long]):
mutable.HashMap[Int,Long] = {
t1 ++ t2.map { case (s, c) => (s, c + t1.getOrElse(s, 0L)) }
}
我收到错误:
可变类型的表达式。Map[Int, Long] 不符合选定的可变类型。HashMap[整数,长]
在本例中,运算符返回 Map 而不是 HashMap,即使这两个术语 和 的类型都是 。++
t1
t2.map {...}
HashMap[int, Long]
所以我的问题是,如何让返回一个 HashMap 代替,或者如何将结果转换为 .++
Map
HashMap
答:
0赞
Anton Okolnychyi
12/15/2016
#1
一个丑陋的方法是在结果地图上使用:asInstanceOf[mutable.HashMap[Int, Long]]
def addInPlace(t1: mutable.HashMap[Int,Long], t2: mutable.HashMap[Int,Long]): mutable.HashMap[Int,Long] = {
val result = t1 ++ t2.map { case (s, c) => (s, c + t1.getOrElse(s, 0L)) }
result.asInstanceOf[mutable.HashMap[Int, Long]]
}
评论
HashMap
Map
HashMap
Map