0

我生成了以下类型的地图

immutable.Map[Int,List[Double]]

Map(
1 -> List(1.02),
2 -> List(0.42, 6.88))

我无法理解如何访问我的地图中的 List() 并使用 reduce 对元素求和。

myMap.reduce(???)
4

1 回答 1

4

.map()您可以使用该函数迭代 Map 。每次迭代你都会得到一个键和值,你需要返回一个键和一个值。在您的情况下,这key将是您的整数 ( 1, 2) 之一,我们可以直接通过它。这value将是一个双打列表,我们可以使用内置的求和.sum

myMap.map { case (key, value) => (key, value.sum) } 

例子:

scala> val myMap = Map(1 -> List(1.02), 2 -> List(0.42, 6.88))
myMap: scala.collection.immutable.Map[Int,List[Double]] = Map(1 -> List(1.02), 2 -> List(0.42, 6.88))

scala> myMap.map { case (key, value) => (key, value.sum) } 
res0: scala.collection.immutable.Map[Int,Double] = Map(1 -> 1.02, 2 -> 7.3)

您可以替换.sum.reduce(_ + _)并得到相同的答案。

于 2018-08-12T15:10:50.727 回答