为什么要用Lambda表达式?先让我们来看java8以前实现一个字符串列表的比较示例:
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);
}
});
这个静态的工具方法接收一个列表,并且使用一个比较器Comparator对给定的列表元素进行排序,这是我们经常发现你创建一个匿名比较器并且把它作为参数传递给一个排序方法。
输出结果:
[xenia, peter, mike, anna]
如果用java8的lambda表达式来实现一下,如何?
Collections.sort(names, (String a, String b) -> {
return b.compareTo(a);
});
是不是精简了一些,逻辑也比较直观。可不可以再精简一点,当然可以!
Collections.sort(names, (String a, String b) -> b.compareTo(a));
极简主义者想再精简一点呢,没有问题。
names.sort((a, b) -> b.compareTo(a));