Java 如何根据scala中的值对列表进行分组?
如何在scala列表中使用GROUPBY? 我是代码的初学者,我得到了一些记录列表,我只想在列表中使用GROUPBY。下面是我的列表示例Java 如何根据scala中的值对列表进行分组?,java,scala,Java,Scala,如何在scala列表中使用GROUPBY? 我是代码的初学者,我得到了一些记录列表,我只想在列表中使用GROUPBY。下面是我的列表示例 List((smith,swarm_4,group_2,400,1200), (smith,swarm_5,group_2,400,1200), (Michel,swarm_4,group_2,400,400), (smith,swarm_6,group_3,400,1200), (smith,swarm_7,group_3,40
List((smith,swarm_4,group_2,400,1200), (smith,swarm_5,group_2,400,1200),
(Michel,swarm_4,group_2,400,400), (smith,swarm_6,group_3,400,1200),
(smith,swarm_7,group_3,400,1200), (Michel,swarm_4,group_2,300,200),
(Michel,swarm_5,group_2,400,400), (Michel,swarm_6,group_3,400,400),
(Michel,swarm_7,group_3,400,400), (smith,swarm_5,group_2,100,200)
)
假设列表包含此格式的记录(名称:String、swarm:String、组:String、Tx:Long、Rx:Long)。
我想分组(swarm和group),分组是匹配,然后聚合(Tx+Tx)和(Rx+Rx)
例如:
使输出变得像
List((smith,swarm_4,group_2,400,1200), (smith,swarm_5,group_2,500,1400),
(Michel,swarm_4,group_2,700,600), (smith,swarm_6,group_3,400,1200),
(smith,swarm_7,group_3,400,1200), (Michel,swarm_5,group_2,400,400),
(Michel,swarm_6,group_3,400,400), (Michel,swarm_7,group_3,400,400))
请向我推荐使用group by或scala编码中的任何其他想法。此代码适用于您给定的列表
var outList = inList.map( x => ((x._1,x._2,x._3),x._4,x._5)))
.groupBy(_._1)
.map{case (key,value) =>
value.reduce( (x,y) => (x._1,(x._2._1+y._2._1,x._2._2+y._2._2) ) )};
你已经尝试过什么,遇到了什么问题?请参见此处,了解有关提出好问题的信息:
var outList = inList.map( x => ((x._1,x._2,x._3),x._4,x._5)))
.groupBy(_._1)
.map{case (key,value) =>
value.reduce( (x,y) => (x._1,(x._2._1+y._2._1,x._2._2+y._2._2) ) )};