簡體   English   中英

使用 lambda 對 Java 中的列表進行排序

[英]Sorting list of list in Java using lambda

我有一個列表元素列表,現在我想使用 lambda 表達式對該列表進行排序,但出現編譯錯誤:

這是沒有 lambda 的工作代碼:

Collections.sort(positions, new Comparator<List<Integer>>() {
    public int compare(List<Integer> ele1, List<Integer> ele2) {
        // some logic here
        return some_number;
    }
});

現在使用 lamda,我正在嘗試這個:

positions.sort((List<Integer> ele1, List<Integer> ele2) -> {

});

但是得到這個編譯錯誤:

The method sort(Comparator<? super List<Integer>>) in the type List<List<Integer>> is not applicable for the arguments ((List<Integer> ele1, List<Integer> ele2) -> {})

您在 lambda 中缺少return語句:

positions.sort((List<Integer> ele1, List<Integer> ele2) -> {
    // logic...
    return some_number;
});

但是請注意,在 Java 8 中對此類列表進行排序的慣用方法是使用Comparator#comparing調用:

positions.sort(Comparator.comparing(l -> logic_that_produces_some_comparable));

.sort需要一個接受兩個列表並返回一個整數的函數。

您提供的 lambda 接受兩個列表並且不返回任何內容。

您需要在 lambda 中返回一個值。

暫無
暫無

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

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