2017-06-15 102 views
0

我有以下形式的階陣列:搜索Scala的陣列,以找到一個值,並將其映射到(陣列沒有價值,價值)

temp: Array[(Array[String], Long)] 
# Eg. Array((Array(attr1,1.0,attr2),15),(Array(1.0,attr5),15),(Array(attr3,attr4,0.0),15),(Array(attr3,attr4),5)) 

我需要採取這種陣列並將其映射到像

temp: Array[(Array[String],String, Long)] 
# Eg. Array((Array(attr1,attr2),1.0,15),(Array(attr5),1.0,15),(Array(attr3,attr4),0.0,15),(Array(attr3,attr4),NULL,15)) 

我在搜索字符串1.0和0.0,並創建一個新的數組與1.0和0.0從原來的刪除。 Incase 1.0和0.0不存在,則使用NULL作爲值。 有沒有簡單的方法來做到這一點?

+0

如果有多個「0.0」或「1.0」,那麼正確的程序是什麼? – jwvh

+0

不會有任何重複數組有確定的唯一值。 –

回答

1

將集合中的元素從一種類型更改爲另一種類型?聽起來像是map

temp.map{ case (ss,l) => 
    (ss.filterNot(_ matches "[01]\\.0") 
    , ss.find(_ matches "[01]\\.0").getOrElse("NULL") 
    , l) 
} // res0: Array[(Array[String], String, Long)] 
+0

我是否需要導入任何出現此錯誤的內容::3:錯誤:非法啓動簡單表達式 –

+0

無需導入。這段代碼只假定名爲'temp'的'val'存在,它的類型是'Array [(Array [String],Long)]''。 – jwvh

+0

我正在使用()而不是{}。輝煌。你是如何知道filterNot函數的?是否有一些指南可以達到這種很酷的功能? –