2016-06-23 47 views
-5

如果我有這樣的斯卡拉輸出代碼:斯卡拉過濾器僅使用數字

(1,ab) 
(2,fd) 
(4, df) 
(a,1) 
(b,3) 
(c,4) 
(d,6) 

我想刪除所有這些都在元組中的第一個插槽中數字的元組,如前三的位置:(1,ab) (2,fd) (4, df)

出於某種原因,我這裏的代碼不正確過濾那些元組:

val temp = t.countByValue().filter(_._1 != Int).print() 

countByValue()函數返回(value (in my case a string like (a,b,c,), count of the times the string occurs)一個元組。

+1

'countByValue'返回什麼類型? – Dima

回答

0

我想這可能會解決你的問題

t.countByValue().filter(tupleOfCount=>Try(tupleOfCount._1.toInt).toOption.isEmpty).print() 

使用isInstanceOf的應該是作爲@sergey說,不得已,所以這段代碼必須解決的問題,否則,模式匹配將是一個不錯的選擇了。

-1
def main(args: Array[String]): Unit = { 
    var newlist = List((1 -> "a"), ("b") -> 2, ("c" -> 3)) 
    newlist.foreach(tuple => if (tuple._1.isInstanceOf[Int]) { 
    println(tuple._1 + "-" + tuple._2) 
    }) 
} 

希望它能提供幫助。 BTW(1,ab)如果你的ab是一個你需要「ab」的字符串。