[英]How can we sort both row-wise ascending and column-wise descending of 2D arrays in Java?
我想在 Java 中按行和列對二維數組進行排序。 有沒有辦法做到類似於以下python代碼。 我有數組作為 numbers[][2];
蟒蛇代碼
# 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);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.