Lambda 表达式
在java 8之前的版本中,可以通过如下的代码,对一个list
排序。
List<String> names = Arrays.asList("peter", "anna", "mike", "xenia");
Collections.sort(names, new Comparator<String>() {
@Override
public int compare(String a, String b) {
return b.compareTo(a);
}
});
Collections.sort
是一个静态工具类方法,它接受一个列表和一个比较器参数,以便对给定列表的元素进行排序。在之前,我们经常创建一个匿名比较器并将它们传递给 sort 方法。
为了取代冗长的匿名比较器,Java 8提供了更短的语法,即 lambda 表达式(lambda expressions:
):
Collections.sort(names, (String a, String b) -> {
return b.compareTo(a);
});
lambda表达式使得代码变得更短,更容易阅读了。而且,lambda表示还可以变得更加的精简:
Collections.sort(names, (String a, String b) -> b.compareTo(a));
当方法体中,只有一行代码的时候,可以省略{}
,直接返回结果。而且,还可以在上面的基础上变得更加精简:
names.sort((a, b) -> b.compareTo(a));