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

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

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无效,因为它返回一个布尔值,而预期的返回类型是一个int.

一个简单的解决方案是:

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

要么:

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

相关文章

HashMap是Java中最常用的集合类框架,也是Java语言中非常典型...
在EffectiveJava中的第 36条中建议 用 EnumSet 替代位字段,...
介绍 注解是JDK1.5版本开始引入的一个特性,用于对代码进行说...
介绍 LinkedList同时实现了List接口和Deque接口,也就是说它...
介绍 TreeSet和TreeMap在Java里有着相同的实现,前者仅仅是对...
HashMap为什么线程不安全 put的不安全 由于多线程对HashMap进...