在Java中,我们如何对2D数组的行升序和列降序进行排序



我想用Java对2D数组进行行和列排序。有没有一种方法可以做到这一点,类似于下面的python代码。我的数组是数字[][2];

python代码

# it first sorts based on index 0; if they match, it reverse sort based on index 1
numbers.sort(key: lambda x:(x[0], -x[1])) 

我们可以通过Arrays.sort((在Java中实现同样的功能吗?如果可以,我需要传递的比较器是什么?

您可以使用以下代码:

Arrays.sort(
numbers, 
Comparator.comparing((int[] x) -> x[0])
.thenComparing(
(int[] x) -> x[1], 
Comparator.<Integer>naturalOrder().reversed()));

这使用接收ComparatorArrays.sort的过载。

也许使用简单的lambda表达式更好:

Arrays.sort(
numbers, 
(a, b) -> a[0] < b[0] ? -1 : a[0] > b[0] ?  1 :
a[1] < b[1] ?  1 : a[1] > b[1] ? -1 : 0);

最新更新