【发布时间】:2012-10-26 09:49:07
【问题描述】:
我是 Scala 的新手,我正在寻找一种更简洁的方法来对映射值进行求和和分组。有没有比下面的代码更好的方法:
def mapSum(thisMap: Map[Char, Int], thatMap: Map[Char, Int]) = {
thisMap.transform { (k, v) => thatMap(k) + v }
}
满足以下测试:
@Test
def mapSum() {
val map: Map[Char, Int] = Map('C' -> 1, 'D' -> 3)
val newMap = mapSum(map, map)
assertEquals(2, newMap('C'))
assertEquals(6, newMap('D'))
}
【问题讨论】:
-
您是否假设地图始终具有相同的键?
-
如果他们不这样做(如您正在学习的 coursera 课程中),您应该使用
.withDefault -
@TravisBrown 是的,他们总是有相同的键。
-
@KimStebel 我没有参加 coursera 课程,我只是在玩 Akka 并编写一个简单的应用程序,不过谢谢。
-
有趣的是,这完全符合本周作业的一部分
标签: scala dictionary collections grouping aggregation