我是Scala的新手,所以如果我在这里监督一些非常基本的事情,请原谅我。我有以下内容:
case class Record(
ID: String,
Count: Double)
List(Record("ID1",10.0),Record("ID1",60.0),Record("ID2",50.0),Record("ID3",100.0),Record("ID3",20.0),Record("ID3",10.0))
其中x是ID,y是Record(x,y)中的计数。我可以使用println(records)将此列表打印到控制台。
我正在尝试输出以下内容:
ID1,70.0
ID2,50.0
ID3,130.0
这是每个ID组的计数的总和。我想尝试使用groupBy方法,但是为了从列表中的每个记录中解析ID,我一直在努力开始对计数进行分组。
例如,我考虑过:
val grouped = records.groupBy(<some_logic_here>)
但是问题是列表中的对象周围包裹有Record(x,y)。
谢谢您的帮助。
答案 0 :(得分:0)
case class Record(ID: String, Count: Double)
List(Record("1", 12), Record("1", 13), Record("2", 13))
.groupBy(_.ID)
.map(e => Record(e._1, e._2.map(e => e.Count).sum))
您需要对groupBy(ID)进行分组,然后获得一个列表,然后需要计算总和。
答案 1 :(得分:0)
export interface Client extends EventEmitter { // ...
这是一支班轮:
case class Record(ID: String,
Count: Double)
val records = List(Record("ID1", 10.0), Record("ID1", 60.0), Record("ID2", 50.0), Record("ID3", 100.0), Record("ID3", 20.0),
Record("ID3", 10.0))