我需要修改我的代码,目标是(我引用)“使匿名内部类成为lambda”。
我有一个解决这个问题的建议,但是不知道lambdas在java中是如何工作的我不知道如何将这个建议应用到我的具体案例中,有人能帮我吗?
这是我的建议
这是“错误”的版本:
myCollection.stream().map(new Mapper<String,String>() {
public String map(String input) {
return new StringBuilder(input).reverse().toString();
}
});
这是“正确的”版本:
myCollection.stream().map(input -> new StringBuilder(input).reverse().toString());
现在,我的代码中的“错误”版本是:
Collections.sort(commits, new Comparator<GitCommit>() {
// @Override
public int compare(GitCommit c1, GitCommit c2) {
return c1.getDate().compareTo(c2.getDate());
}
});
对应的“正确”版本是什么?
3条答案
按热度按时间m3eecexj1#
更改此项:
到
你不需要使用
Collections.sort
您可以简单地调用默认列表method
排序,即:并利用参考方法和
interface
比较器:关于列表默认排序方法:
默认void排序(comparator<?super e>c)根据指定比较器产生的顺序对该列表进行排序。
oxalkeyp2#
甚至
brgchamk3#
在第一种情况下,方法
map
要求Function
. 我想这是错的,因为Mapper.
只要Mapper
不延伸Function
. 这是一条路:第二种情况是正确的,我假设您的目标是将匿名函数打包为:
lambda表达式:
或方法引用: