2015-06-20 55 views
0

所以我在這裏定義的類:斯卡拉過濾器和打印類

class CsvEntry(val organisation: String, val yearAndQuartal : String, val medKF:Int, val trueOrFalse: Int, val name: String, val money:String){ 
    override def toString = s"$organisation, $yearAndQuartal, $medKF, $trueOrFalse, $name, $money" 
} 

讓我們假設「medKF」的值是2,4 wheter或31 我怎樣才能過濾所有CsvEntries爲僅我是「medKF」爲2的這些輸出嗎? (與foreach println)?

+2

'entries filter(_。medKF == 2)foreach println'? –

+0

謝謝! 我還有一個問題: 讓我假設在我的變量「medKF」中存儲的數字是「55,43」 ,我想將它們統計在一起,所以我想要將每個行的值添加到「medKF」中並添加它到什麼叫做讓我們說「總和」的價值? – Bajro

+0

它是一個'Int',所以你怎麼存儲''55,43「'? –

回答

1

創建兩個隨機條目:

val a = new CsvEntry("s", "11", 12, 0, "asdasd", "1") 
val b = new CsvEntry("s", "11", 2, 0, "asdasd", "234,123.23") 

然後過濾:

List(a,b).withFilter(_.medKF == 2).foreach(println) 

總結這些條目:

List(a,b).map(_.medKF).sum 

要加錢:

def moneyToCent(money: String): Long = (money.replace(",","").toDouble*100).toLong 
List(a,b).withFilter(_.medKF == 2).map(x => moneyToCent(x.money)).sum