簡體   English   中英

我們如何在 Java 中對二維數組的行升序和列降序進行排序?

[英]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()));

這使用接收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);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM