在Scala中对列表执行算术

时间:2018-11-03 15:47:57

标签: scala list

我是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)。

谢谢您的帮助。

2 个答案:

答案 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))