JDK8新特性之lambda表达式

Welcome Huihui's Code World ! !

接下来看看由辉辉所写的关于lambda表达式的相关操作吧

目录

Welcome Huihui's Code World ! !

一.是什么

二.为什么要用

三.底层

四.什么时候用

五.怎么用

辉辉小贴士:十个必须掌握的lambda表达式


一.是什么

        Lambda 是一个 匿名函数 ,我们可以把 Lambda表达式理解为是 一段可以传递的代码(将代码像数据一样进行传递)。可以写出更简洁、更灵活的代码。作为一种更紧凑的代码风格,使Java语言表达能力得到了提升

二.为什么要用

在此之前,使用匿名内部类来完成,而使用匿名内部类的方式,相对冗余

Lambda表达式与匿名内部类的区别

  1. 所需类型不一样,匿名内部类需要的类型可以是类,也可以是抽象类,接口;而lambda表达式需要的类型必须是接口
  2. 抽象方法的数量不一样,匿名内部类所需的接口中的方法的数量随意,但lambda表达式只能有一个抽象方法
  3. 实现原理不同,匿名内部类是在编译之后形成class,而lambda文件时在程序运行的时候动态生成class

综上,lambda表达式比匿名内部类要更加方便,因此出现了lambda表达式来替代它

三.底层

  • 函数式编程思想,将需要执行的代码放入函数(相当类里面的方法)中即可
    • 底层逻辑
      • 在类里面新增一个方法,这个方法就是lambda表达式中的代码
      • 还会形成一个匿名内部类
      • 在接口中重写方法中会调用新生成

四.什么时候用

  • 方法的参数或者局部变量是一个接口
  • 接口中有且只有一个抽象方法
    • 检测是否只有一个抽象方法
      • JDK8新特性之lambda表达式_第1张图片

五.怎么用

  •  格式:左侧是参数列表,接着是->【起到连接的作用,连接左右两侧】,右侧是方法体
  • JDK8新特性之lambda表达式_第2张图片

  • 省略
    • 小括号内的参数类型可以省略
    • 如果小括号内有且只有一个参数,那么小括号可以省略
    • 如果大括号内有且只有一个语句,那么return和大括号,语句分号都可以省略

辉辉小贴士:十个必须掌握的lambda表达式

1. 使用lambda表达式定义函数类型的变量:

   Function square = x -> x * x;
   
2. 使用lambda表达式遍历集合:

   List list = Arrays.asList(1, 2, 3, 4, 5);
   list.forEach(x -> System.out.println(x));
   
3. 使用lambda表达式过滤集合:

   List list = Arrays.asList(1, 2, 3, 4, 5);
   list.stream().filter(x -> x % 2 == 0).forEach(x -> System.out.println(x));

4. 使用lambda表达式对集合进行排序:

   List list = Arrays.asList(5, 1, 3, 4, 2);
   list.sort((x, y) -> x - y);
   
5. 使用lambda表达式对集合进行计算:

   List list = Arrays.asList(1, 2, 3, 4, 5);
   int sum = list.stream().reduce(0, (x, y) -> x + y);
   
6. 使用lambda表达式定义线程:

   new Thread(() -> System.out.println("Hello World")).start();
   
7. 使用lambda表达式定义事件监听器:

   button.addActionListener(event -> System.out.println("Button clicked"));
   
8. 使用lambda表达式处理异常:

   handleException(ex -> System.out.println("Exception caught: " + ex.getMessage()));
   
9. 使用lambda表达式处理Optional对象:

   Optional optionalValue = getValue();
   optionalValue.ifPresent(value -> System.out.println("Value: " + value));
   
10. 使用lambda表达式实现接口的默认方法:

   interface MyInterface {
       default void myDefaultMethod() {
           System.out.println("Default method");
       }
   }

                      好啦,今天的分享就到这了,希望能够帮到你呢!                  

你可能感兴趣的:(JDK8新特性,数学建模)