我已经生成了以下类型的地图
immutable.Map[Int,List[Double]]
Map(
1 -> List(1.02),
2 -> List(0.42, 6.88))
我无法理解如何访问地图中的List()并使用reduce来求和。
myMap.reduce(???)
答案 0 :(得分:4)
您可以使用.map()
函数来迭代Map。每次迭代都将获得一个键和一个值,并且需要返回一个键和一个值。在您的情况下,key
将是您的整数之一(1
,2
),我们可以直接通过。 value
将是一个Doubles列表,我们可以使用内置的.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(_ + _)
,并获得相同的答案。