在scala中,如何在压缩两个数组之后进行过滤

时间:2013-11-06 03:53:05

标签: arrays scala filter zip multidimensional-array

 def clu(allcenter:Array[Int], data:Array[Array[Double]], cnum : Int) = {
     val alldata = (data, allcenter).zipped.map { case (a, b) => b.toDouble +: a}

在此之后我想过滤alldata的第一个元素并获取retain元素

像这样:

alldata.fliter(_._1 == 10).map(case(a,b,c) => (b,c)) //it's way in tuple

如何以数组方式重写上述语句? 谢谢!

1 个答案:

答案 0 :(得分:4)

你可以这样写:

alldata
  .filter(_(0) == 10)
  .map {
    case Array(a, b, c) => (b, c) // from array to tuple
  }

但是,你也可以同时做两件事:

alldata collect {
  case Array(10, b, c) => (b, c)
}