2015-06-20 58 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