val x1 = List(
c1(1, ("UTC",List(c2("2014 - 11 - 23", 0.8747f)))),
c1(2, ("UTC", List(c2("2014 - 11 - 23", 0.0f)))),
c1(1, ("EST", List(c2("2014 - 09 - 01", 0.432f)))),
c1(3, ("EST", List(c2("2014 - 09 - 01", 4.1043f))))
)
现在我希望我的列表按ID分组,如下所示
val x2 = List(
c1(1, ("UTC", List(c2("2014 - 11 - 23", 0.8747f)), ("EST", List(c2("2014 - 09 - 01", 0.432f)))),
c1(2, ("UTC", List(c2("2014 - 11 - 23", 0.0f)))),
c1(3, ("EST", List(c2("2014 - 09 - 01", 4.1043f)))))
)
因此id = 1的所有列表都被分组到一个列表中。
P.S。 c1和c2是用于保存数据的案例类。
答案 0 :(得分:0)
除非我弄错了,否则你正在寻找List.groupBy
:
x1.groupBy(_.id)
答案 1 :(得分:0)
我想这就是你要找的东西。
case class c1(id:Int, list:List[String])
object Tester extends App{
val x = List(c1(1, List("a","b")), c1(2, List("x","y")), c1(1,List("t","w")), c1(4, List("g","j")))
val y = x.groupBy(_.id)
println(y)
}
答案 2 :(得分:0)
可能是这样的:
case class c1(id: Int, data: (String, List[c2])*)
case class c2(d: String, v: Float)
val x2 = x1.groupBy(_.id).map(g => c1(g._1, g._2.flatMap(y => y.data): _*))
println(x2)
// List(
// c1(2,List((UTC,List(c2(2014 - 11 - 23,0.0))))),
// c1(1,List((UTC,List(c2(2014 - 11 - 23,0.8747))),
// (EST,List(c2(2014 - 09 - 01,0.432))))),
// c1(3,List((EST,List(c2(2014 - 09 - 01,4.1043))))))