2d数组过滤器如何在scala中获取值

时间:2013-11-06 00:32:16

标签: arrays scala filter multidimensional-array

我有一个二维数组

val A = Array((10.0,1.0,2.0,3.0),(20.0,4.0,5.0,6.0),(10.0,7.2.8.0,9.0))

如何过滤第一个等于10的元素,并获得另一个元素值?

结果如:

x = Array((1.0,2.0,3.0),(7.2.8.0,9.0))

我可以使用x(i)来获取数组中的值

谢谢你! :)

2 个答案:

答案 0 :(得分:0)

scala> A.filter(_._1 == 10.0).map(t => t.productIterator.toList.tail)
res0: Array[List[Any]] = Array(List(1.0, 2.0, 3.0), List(7.2, 8.0, 9.0))

答案 1 :(得分:0)

你可以这样做:

A.filter(_._1 == 10).map{case (a,b,c,d)=>(b,c,d)}

或者像这样:

for ((a,b,c,d) <- A if a == 10) yield (b,c,d)

(顺便说一下,除非你真的需要,否则建议你不要在Scala中使用数组;你应该更喜欢Seq和Vector等不可变集合。对Scala集合有一些(有些陈旧的)介绍{{3} }。)