给出Iterator[(String, Int)]
我想按String
进行分组并将Int
求和并将结果作为Map[String, Int]
答案 0 :(得分:4)
您可以将其转换为列表或其他严格结构:
iter.toList.groupBy(_._1).mapValues(_.map(_._2).sum)
如果您不想转换为严格的结构(强制所有条目进入内存),您可以foldLeft
并随时构建地图:
(Map.empty[String,Int] /: iter) {case (acc, (k,v)) =>
acc + (k -> acc.get(k).map(_ + v).getOrElse(v))
}