簡體   English   中英

按第一列然后按第二列對二維數組進行排序

[英]Sort a 2d array by the first column and then by the second one

int[][] arrs = {{1, 100}, {11, 22}, {1, 11}, {2, 12}};
Arrays.sort(arrs, (a, b) -> (a[0] - b[0]));

上面的數組已排序為

{1, 100}
{1, 11}
{2, 12}
{11, 22}

我希望它們首先按a[0]-b[0]排序,如果a[0]=b[0] ,然后按a[1]-b[1]對它們進行排序。

{1, 11}
{1, 100}
{2, 12}
{11, 22}

怎么做?

本質上,您要做的是按字典順序比較內部 arrays (就像單詞在字典中的排序方式一樣)。 Arrays.compare正是這樣做的。

Arrays.sort(arrs, Arrays::compare);

您可以使用如下比較器鏈:

int[][] arrs = {{1, 100}, {11, 22}, {1, 11}, {2, 12}};

Arrays.sort(arrs, Comparator
        .<int[]>comparingInt(arr -> arr[0]).thenComparing(arr -> arr[1]));

Arrays.stream(arrs).map(Arrays::toString).forEach(System.out::println);

Output:

[1, 11]
[1, 100]
[2, 12]
[11, 22]

另請參閱:按升序對二維數組進行排序

暫無
暫無

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

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