Java 如何根据scala中的值对列表进行分组?

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

如何在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,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) ) )};