Java Lambda 表达式 : incompatible types: bad return type in lambda expression

标签 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[i]);
    jobs.add(job);
}

现在我想根据他们的利润(每个工作的第一个元素)对工作进行排序,如下所示:

jobs.sort((j1, j2) -> j1.get(0) > j2.get(0));

但是出现如下错误:

error: incompatible types: bad return type in lambda expression

我做错了什么,我该如何解决?谢谢!

最佳答案

你的 comparator无效,因为它返回一个 boolean 而预期的返回类型是一个 int

一个简单的解决方案是:

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

或:

jobs.sort((j1, j2) -> Integer.compare(j1.get(0), j2.get(0)));

关于Java Lambda 表达式 : incompatible types: bad return type in lambda expression,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50090899/

相关文章:

c# - 如何用反射识别 lambda 闭包

java - 我想从 json 中提取一个值

java - 在java中扩展不可实例化的类

java - 无法创建 PoolableConnectionFactory

python - 如何对相互链接的元组列表进行排序?

java - 将带有方法引用的 lambda 转换为 Java 7 中的函数

Java内存管理对象与原始类型

c - 如何正确排序 C 中的字符串?

c# - 如何对有时条目相等的 List<Person> 进行排序?

c++ - 在 C++11 中按值或引用使用 lambda 默认捕获的缺点?