Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Lambda表达式:不兼容类型:Lambda表达式中的返回类型错误_Java_Sorting_Lambda_Collections_Java 8 - Fatal编程技术网

Java Lambda表达式:不兼容类型:Lambda表达式中的返回类型错误

Java Lambda表达式:不兼容类型:Lambda表达式中的返回类型错误,java,sorting,lambda,collections,java-8,Java,Sorting,Lambda,Collections,Java 8,我有以下工作列表,每个元素都是一个包含利润和困难的列表: List<List<Integer>> jobs = new ArrayList<>(); for (int i = 0; i < difficulty.length; i++) { List<Integer> job = new ArrayList<Integer>(); job.add(profit[i]); job.add(difficulty

我有以下工作列表,每个元素都是一个包含利润和困难的列表:

List<List<Integer>> jobs = new ArrayList<>();
for (int i = 0; i < difficulty.length; i++) {
    List<Integer> job = new ArrayList<Integer>();
    job.add(profit[i]);
    job.add(difficulty[i]);
    jobs.add(job);
}
但出现以下错误:

error: incompatible types: bad return type in lambda expression
我做错了什么?我该如何解决这个问题?谢谢

您的返回类型无效,因为它返回的是
布尔值,而预期的返回类型是
int

一个简单的解决办法是:

jobs.sort(Comparator.comparing(e -> e.get(0)));
或:


问题出在下面一行

jobs.sort((j1, j2) -> j1.get(0) > j2.get(0));
您没有遵循排序方法的签名:

default void sort(Comparator<? super E> c)

或者使用@Aominè提供的代码片段

我将回答这个问题,因为在我的例子中,问题在于JDK


我用JDK1.8.56编译时得到了错误的返回类型,所以我更新到了1.8.211,问题已经解决了。

看看Javadoc for。你应该返回一个整数而不是布尔值。或者在这个特定的示例中,是jobs.sort(Comparator.comparingit(…);非常感谢。我做了一些修改并选择了:jobs.sort((j1,j2)->j1.get(0)-j2.get(0));
jobs.sort((j1, j2) -> j1.get(0) > j2.get(0));
default void sort(Comparator<? super E> c)
jobs.sort((j1, j2) -> compare two lists somehow to return int);