JDK8新特性之lambda表达式

文章详细介绍了Java中的Lambda表达式,包括其作为匿名函数的概念、为何使用它以减少冗余代码、底层实现的函数式编程思想,以及何时和如何使用Lambda。同时,列举了10个必备的Lambda表达式应用场景,如遍历集合、定义线程和处理异常等。
摘要由CSDN通过智能技术生成

🥳🥳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表达式中的代码
      • 还会形成一个匿名内部类
      • 在接口中重写方法中会调用新生成

四.什么时候用

  • 方法的参数或者局部变量是一个接口
  • 接口中有且只有一个抽象方法
    • 检测是否只有一个抽象方法

五.怎么用

  •  格式:左侧是参数列表,接着是->【起到连接的作用,连接左右两侧】,右侧是方法体
  • 省略
    • 小括号内的参数类型可以省略
    • 如果小括号内有且只有一个参数,那么小括号可以省略
    • 如果大括号内有且只有一个语句,那么return和大括号,语句分号都可以省略

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

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

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

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

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

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

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

   List<Integer> 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<Integer> optionalValue = getValue();
   optionalValue.ifPresent(value -> System.out.println("Value: " + value));
   
10. 使用lambda表达式实现接口的默认方法:

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

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

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

是辉辉啦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值