2016-10-11 85 views
0

我有一個元組列表,看起來像下面這樣:治療(字符串,整數)元組數組像字典

(("String1", Value1), ("String2", Value2), ...) 

其中string是String和值是Double。有沒有在斯卡拉的方法來完成以下內容:

1)搜索列表中的特定字符串值。

2)如果我們有一個命中,返回與字符串關聯的值。

3)如果我們有遺漏,則返回-1。

這個元組序列是在格式爲RDD [K,V]的RDD上使用collect創建的,其中鍵是字符串,val是雙精度型。本來我打算在RDD上使用查找,但似乎這項工作需要在驅動程序上完成(因此collect)。

+1

使用'collectAsMap',而不是'collect' http://spark.apache.org/docs/latest/api /scala/index.html#[email protected]():scala.collection.Map[K,V] – Yawar

回答

1

也許你可以嘗試將其轉換爲一個地圖第一則:

scala> val collection = Map(("hello", 1), ("world", 2)) 
collection: scala.collection.immutable.Map[String,Int] = Map(hello -> 1, world -> 2) 

scala> collection getOrElse ("hello", -1) 
res3: Int = 1 

scala> collection getOrElse ("scala", -1) 
res4: Int = -1 
+0

最終將其轉換爲地圖,如同您建議的那樣。謝謝! – mongolol

1
val m = list.toMap.withDefaultValue(-1d) 

// 1 and 2 
m("String1") // Value1 

// 3 
m("Some other") // -1d