Java 8 Lambda不工作?
嗨,我有一个(我假设是)非常琐碎的代码:Java 8 Lambda不工作?,java,lambda,java-8,Java,Lambda,Java 8,嗨,我有一个(我假设是)非常琐碎的代码: List<Integer> f = new LinkedList<Integer>(); Collections.sort(f, (Integer f1, Integer f2) -> { Integer.compare(f1,f2); }); listf=newlinkedlist(); Collections.sort(f,(整数f1,整数f2)->{ 整数。比较(f1,f2); });
List<Integer> f = new LinkedList<Integer>();
Collections.sort(f, (Integer f1, Integer f2) -> {
Integer.compare(f1,f2);
});
listf=newlinkedlist();
Collections.sort(f,(整数f1,整数f2)->{
整数。比较(f1,f2);
});
但是,我得到以下编译错误:
无法从
比较器
转换到比较器在这种情况下,您可以使用方法引用:
List<Integer> f = new LinkedList<>();
Collections.sort(f, Integer::compare);
如果lambda包含{}
同样的事情,没有返回和括号:
Collections.sort(f, (f1 , f2) ->
Integer.compare(f1,f2)
);
下面评论部分的一些有用注释:
可以只使用集合。排序(f)
并依赖自然排序。借
因为Java8
List
接口有sort
方法,也可以使用f.sort(null);f、 排序(Comparator.naturalOrder())
or,Collections.sort(f,Comparator.naturalOrder())代码>按嗯,但如果我只是想这样做怎么办?那不可能吗?我做错了什么?谢谢你的回答,但它没有回答我的问题!非常感谢,我没有意识到我弄乱了返回{}的东西,很高兴知道。@bharal我更新了我的原始答案,但最短的方法是使用方法引用。你可以简单地进行集合。排序(f)并依赖自然排序。或者f.sort(null)代码>。或者,f.sort(Comparator.naturalOrder())
or,Collections.sort(f,Comparator.naturalOrder())代码>也可以。这里几乎是强制性引用的地方,因为每个使用LinkedList
的人很可能都没有读过它……我并不总是使用列表,但当我使用Vector时,你应该总是在适当的地方使用List
s。但更喜欢ArrayList
。几乎没有理由使用LinkedList
@bharal如果你喜欢/使用向量,那么你需要阅读以下内容(我也读过,也学到了!):@Holger这里的每个人都很严肃,不是吗?
Collections.sort(f, (f1 , f2) ->
Integer.compare(f1,f2)
);