bha*_*ral 4 java lambda java-8
嗨,我有这个(我假设是)真正琐碎的代码:
List<Integer> f = new LinkedList<Integer>();
Collections.sort(f, (Integer f1, Integer f2) -> {
Integer.compare(f1,f2);
});
Run Code Online (Sandbox Code Playgroud)
但是,我得到以下编译错误:
无法转换
Comparator<Integer>为Comparator<? super T>
这不是很有帮助 - 出了什么问题?
Ant*_*iuc 12
在这种情况下,您可以使用方法引用:
List<Integer> f = new LinkedList<>();
Collections.sort(f, Integer::compare);
Run Code Online (Sandbox Code Playgroud)
在原始代码中缺少return语句:
Collections.sort(f, (f1 , f2) -> {
return Integer.compare(f1,f2);
});
Run Code Online (Sandbox Code Playgroud)
如果lambda包含,则必须使用 return{}
没有返回和括号的相同的事情:
Collections.sort(f, (f1 , f2) ->
Integer.compare(f1,f2)
);
Run Code Online (Sandbox Code Playgroud)
以下评论部分的一些有用的注释:
可以使用Collections.sort(f)和依赖自然顺序.作者:Jean-FrançoisSavard
由于Java 8 List接口具有sort也可以使用的方法,f.sort(null); f.sort(Comparator.naturalOrder());或者Collections.sort(f, Comparator.naturalOrder());由Holger使用
| 归档时间: |
|
| 查看次数: |
261 次 |
| 最近记录: |