按指定列排序Scala 2D数组

elm*_*elm 2 arrays sorting scala matrix

给定任何2D阵列,例如,

val in = Array( Array(59, 45, 32), 
                Array(20, 88, 5), 
                Array(49, 72, 89))
Run Code Online (Sandbox Code Playgroud)

我希望按第三列排序,这样

val out = Array( Array(20, 88, 5),
                 Array(59, 45, 32),                       
                 Array(49, 72, 89))
Run Code Online (Sandbox Code Playgroud)

非常感谢.

ser*_*jja 7

这应该可以,但如果您的数组大小小于3,则会失败:

scala> in.sortBy(_(2))
Run Code Online (Sandbox Code Playgroud)

输出:

res0: Array[Array[Int]] = Array(Array(20, 88, 5), Array(59, 45, 32), Array(49, 72, 89))
Run Code Online (Sandbox Code Playgroud)

你也可以像这样做这个故障安全:

in.sortBy {
  case arr @ Array(_) if arr.size >= 3 => arr(2)
  case arr => Int.MaxValue // or any other value. Using MaxValue will make the invalid arrays be last ones
}
Run Code Online (Sandbox Code Playgroud)