簡體   English   中英

如何在 Java 中對 ArrayLists 的 ArrayList(通過其中一個變量)進行排序?

[英]How to sort an ArrayList of ArrayLists (by one of the variables) in Java?

(Java 8) 我有一個 ArrayList 的 ArrayList,如下所示:

[5, 10]

[2, 11]

[1, 12]

[8, 13]

我希望這些列表按列表中的第一個值按升序或降序排序。 例如,按升序排列,ArrayList 將被排序為:

[1, 12]

[2, 11]

[5, 10]

[8, 13]

我怎樣才能做到這一點?

我正在努力使用比較器 class。我看到的其他文檔指的是當此數據由數組表示時(Arrays.sort 然后在參數中定義比較器),但是當它是 ArrayLists 列表時我無法弄清楚解決方案。

使用 Stream API(Java 8):

public static void main(String[] args) {
    List<List<Integer>> list = new ArrayList<>();

    list.add(asList(5, 10));
    list.add(asList(2, 11));
    list.add(asList(1, 12));
    list.add(asList(8, 15));

    System.out.println("sorted asc = " + list.stream()
            .sorted(Comparator.comparing(o -> o.get(0)))
            .collect(Collectors.toList()));

    System.out.println("sorted desc = " +  list.stream()
            .sorted((i, j) -> -i.get(0).compareTo(j.get(0)))
            .collect(Collectors.toList()));
}

private static List<Integer> asList(Integer... arr) {
    return Arrays.asList(arr);
}

排序為 asc = [[1, 12], [2, 11], [5, 10], [8, 15]]

排序 desc = [[8, 15], [5, 10], [2, 11], [1, 12]]

暫無
暫無

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

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