effective java - 7:Lambda与Stream

42 Lambda优先于匿名类

  • Lambda更加简洁
  • 自动推导参数类型
  • 枚举实例域优先于特定于常量的类主题 链接传送

备注:

1 匿名内部类与Lambda举例对比

匿名内部类写法 实现排序

   /**
    * 匿名内部类实现排序
    */
   @Test
   public void test1() {

       List<Integer> list = Arrays.asList(1, 2, 3, 2, 5, 76, 12);
       Collections.sort(list, new Comparator<Integer>() {
           @Override
           public int compare(Integer firstValue, Integer lastValue) {
               return firstValue - lastValue;
           }
       });

       list.stream().forEach(System.out::println);
   }

3种Lambda写法 实现排序
    @Test
    public void test2() {

        List<Integer> list = Arrays.asList(1, 2, 3, 2, 5, 76, 12);
        Collections.sort(list,(s1,s2)->s1-s2);
        Collections.sort(list, Comparator.comparingInt(s -> s));
        Collections.sort(list, Integer::compareTo);
        // 推荐写法
        list.sort(Integer::compareTo);
        list.stream().forEach(System.out::println);
    }

1 不适合使用Lambda的情况

  • 抽象类,而非接口
  • 接口不是函数接口(有多个抽象方法)

链接:枚举+Lamda+静态方法策略 干掉if else

猜你喜欢

转载自blog.csdn.net/Draymond_feng/article/details/107922226
今日推荐