java 8 lambda 实现 Comparator
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的魅力吧…
抄的情况
上一篇:
通过多线程提高代码的执行效率例子
下一篇:
c++和Java哪个比较好入门