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的魅力吧…

抄的情况

抄源 抄量 抄后感
经验分享 程序员 微信小程序 职场和发展