我想在每3个元素中映射一个数组,输出是多个[k,v]对,例如:
input: array(1,2,3,4,5,6,7,8,9,7,12,11)
output: (1 => 2,3) (4 => 5,6)(7 => 8,9) (7 => 12,11)
我还希望通过键减少这些对,例如,如果我想用key = 7收集数据,那么输出将为(7=> 8,9,12,11).
非常感谢。
答案 0 :(得分:3)
我认为您需要的是
val input = Array(1, 2, 3, 4, 5, 6, 7, 8, 9, 7, 12, 11)
val output = input.toSeq.grouped(3)
.map(g => (g.head, g.tail)).toList
.groupBy(_._1)
.mapValues(l => l.flatMap(_._2))
结果将是
地图(4 - >列表(5,6),7 - >列表(8,9,12,11),1 - >列表(2,3))