gpt4 book ai didi

Java 8 Lambda 不工作?

转载 作者:搜寻专家 更新时间:2023-11-01 01:15:46 25 4
gpt4 key购买 nike

您好,我有这个(我认为是)非常简单的代码:

List<Integer> f = new LinkedList<Integer>();
Collections.sort(f, (Integer f1, Integer f2) -> {
Integer.compare(f1,f2);
});

但是,我得到以下编译错误:

Cannot convert from Comparator<Integer> to Comparator<? super T>

这不是很有帮助 - 出了什么问题?

最佳答案

在这种情况下你可以使用方法引用:

 List<Integer> f = new LinkedList<>();
Collections.sort(f, Integer::compare);

原代码中缺少返回语句:

 Collections.sort(f, (f1 ,  f2) -> {
return Integer.compare(f1,f2);
});
如果 lambda 包含 {}

,则必须使用

return

相同的东西没有回车和括号:

Collections.sort(f, (f1 ,  f2) -> 
Integer.compare(f1,f2)
);

下面评论部分的一些有用注释:

可以只使用 Collections.sort(f) 并依赖于自然排序。通过 Jean-François Savard

自 Java 8 List 接口(interface)有 sort 方法也可以使用 f.sort(null); f.sort(Comparator.naturalOrder());Collections.sort(f, Comparator.naturalOrder()); by Holger

关于Java 8 Lambda 不工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41805485/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com