JDK1.8版本之前对对象集合进行排序,一般我们都会创建一个比较器。实现compare方法。十分复杂,在JDK1.8版本之后出现了新的写法,我们称之为Lambda表达式,它在编写上简化了很多。下面我们做一下比较说明:
1.8版本之前字符串集合比较:
class compareDemo implements Comparator {
public int compare(String a, String b) {
a.compareTo(b);
}
}
class MainTest {
public static void main(String[] args) {
List list = new ArrayList<>();
list.add("dddd");
list.add("aaaa");
list.add("ffff");
list.add("tttt");
CompareDemo demo = new CompareDemo();
Collections.sort(list, demo);
for (String str : list) {
System.out.println(demo);
}
}
}
1.8版本之后字符串集合比较:
class MainTest {
public static void main(String[] args) {
List list = new ArrayList<>();
list.add("dddd");
list.add("aaaa");
list.add("ffff");
list.add("tttt");
Collections.sort(list, (String a, String b) -> {
return a.compareTo(b);
});
for (String str : list) {
System.out.println(str);
}
}
}
看到了吧,代码变得更段且更具有可读性,但是实际上还可以写得更短:
代码如下:
Collections.sort(names, (String a, String b) -> b.compareTo(a));
对于函数体只有一行代码的,你可以去掉大括号{}以及return关键字,但是你还可以写得更短点:
代码如下:
Collections.sort(names, (a, b) -> b.compareTo(a));
Java编译器可以自动推导出参数类型,所以你可以不用再写一次类型。
关于Lambda表达式可以网上搜索相关资料