java 8 lambda 实现Comparator
文章目录
代码与写法
实体类
@Data
public class Cat {
private String name;
private Integer age;
}
// 给个list
public static List<Cat> cats = Arrays.asList(
new Cat("大黄", 22),
new Cat("大黑", 15),
new Cat("大紫", 14),
new Cat("大金", 4)
);
1. 正常的写法
@Test
public void sortOld() {
Comparator<Cat> ageComp = new Comparator<Cat>() {
@Override
public int compare(Cat o1, Cat o2) {
return o1.getAge().compareTo(o2.getAge());
}
};
Collections.sort(cats, ageComp);
System.out.println(cats);
}
2. java8 lambda 写法
@Test
public void sortjava8Old() {
Comparator<Cat> ageComp = (o1, o2) -> o1.getAge().compareTo(o2.getAge());
Collections.sort(cats, ageComp);
System.out.println(cats);
}
3. java8 lambda 不当人写法
@Test
public void sortjava8New() {
Comparator<Cat> ageComp = Comparator.comparing(Cat::getAge);
Collections.sort(cats, ageComp);
System.out.println(cats);
}
4. 我的错 Comparator不应该写出来 究极不当人写法
前面的 Comparator 直接写在 sort 方法里行了
@Test
public void j8way3() {
cats.sort(Comparator.comparing(Cat::getAge));
System.out.println(cats);
}
或许这就是lambda的魅力吧…
抄的情况
抄源 | 抄量 | 抄后感 |
---|---|---|
blog | 20% | 作者写的非常浅,是位华人,这次是先阅读,然后边想象边百度,这个博客可以作为主抄博客 |