2017-06-09 3 views
0

Ich versuche groupby Methode auf transactionDay zu verwenden und die sum der transactionAmount zu nehmen. und drucke die Ausgabe.Wie sum und groupby auf einer Liste in Scala anwenden?

case class Transaction(
    transactionId: String, 
    accountId: String, 
    transactionDay: Int, 
    category: String, 
    transactionAmount: Double) 

habe ich eine Liste wie folgt aus:

val transactions: List[Transaction] = transactionslines.map { line => 
    val split = line.split(',') 
    Transaction(split(0), split(1), split(2).toInt, split(3), split(4).toDouble) 
}.toList 

Kann das groupBy Verfahren mit der Verwendung von jemand helfen.

Wenn Sie Dokumente zum Teilen haben, wäre es sehr hilfreich.

+0

Willkommen bei SO! Bitte lesen Sie https://StackOverflow.com/Help/Mcve, um zu sehen, wie Sie Ihre Frage verbessern können. – OlivierBlanvillain

+0

'transactions.groupBy (_. TransctionDay) .mapValues ​​(_. Map (_. TransactionAmount) .sum))' – Dima

+0

"Wenn Sie Dokumente haben, die Sie teilen möchten, wäre das sehr hilfreich." - Was stimmt nicht mit [der Dokumentation] (http://scala-lang.org/api/current/scala/collection/immutable/List.html#groupBy [K] (f: A => K)): scala.collection. unveränderbar. Karte [K, Repr])? –

Antwort

2

folgenden Code sollte arbeiten, um die Lösung zu erhalten, benötigen Sie

val transactions = transactionslines.map(line => line.split(",")) 
    .map(split => Transaction(split(0), split(1), split(2).toInt, split(3), split(4).toDouble)) 
transactions.groupBy(_.transactionDay).mapValues(trans => trans.map(amount => amount.transactionAmount).sum).foreach(println) 
Verwandte Themen