嗨,我有这个(我假设是)真正琐碎的代码:
Listf = new LinkedList (); Collections.sort(f, (Integer f1, Integer f2) -> { Integer.compare(f1,f2); });
但是,我得到以下编译错误:
无法转换
Comparator
为Comparator super T>
这不是很有帮助 - 出了什么问题?
在这种情况下,您可以使用方法引用:
Listf = new LinkedList<>(); Collections.sort(f, Integer::compare);
在原始代码中缺少return语句:
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çoisSavard
由于Java 8 List
接口具有sort
也可以使用的方法,f.sort(null); f.sort(Comparator.naturalOrder());
或者Collections.sort(f, Comparator.naturalOrder());
由Holger使用