对列表进行排序而不更改scala中的顺序

Mah*_*hah 4 scala

val a = List((2,5,1),(3,8,4), (5,4,3) ,(9,1,2))
Run Code Online (Sandbox Code Playgroud)

我希望输出作为一个不同的列表,它是基于列表中每个元组的中间元素的排序顺序,第一和第三元组的顺序不应该更改.它就像只交换第二个元组.

预期的答案是:

List((2,1,1), (3,4,4) , (5,5,3), (9,8,2))
Run Code Online (Sandbox Code Playgroud)

try*_*ryx 6

zip并且unzip他们的变体是你这种事情的朋友.

val x = List((2,5,1),(3,8,4), (5,4,3) ,(9,1,2))
val y = x.unzip3 match {
  case (a,b,c) => (a, b.sorted,c).zipped.toList
}
Run Code Online (Sandbox Code Playgroud)