我想用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()));
这使用接收Comparator
的Arrays.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);