2017-06-15 72 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函数的?是否有一些指南可以达到这种很酷的功能? –