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);