lambda表达式(看完这一篇就清楚啦)

一、前言 

二、lambda表达式优点

三、lambda表达式缺点

四、lambda语法

1.代码:

2.执行结果:

3.语法注意事项:

五、lambda表达式和函数式接口

六、函数式接口

 1.变量捕获

2.lambda用法

map.foreach()

list排序

list查找过滤

七、总结


一、前言 

1.lambda表达式是JDK1.8中的一个重要特性,lambda表达式允许你通过表达式来代替功能接口(通过表达式实现业务功能),lambda表达式可以看做一个匿名函数。实际上就是为了让你的代码变得更加的简洁美观。

二、lambda表达式优点

  • 提供了更简单的语法和写代码的方式
  • 取代了匿名内部类
  • 简化代码,干净整洁
  • 方便了函数式编程
  • 增强了集合的操作

三、lambda表达式缺点

  • 代码可读性变差
  • 不容易进行调试

四、lambda语法

(参数列表)->{业务代码实现....}  箭头的意思可以通俗的理解为被用于的意思。不可以省略。

1.代码:

package thread.enumandlambda;

import java.util.Arrays;
import java.util.List;

/**
 * @Author: wenjingyuan
 * @Date: 2022/10/29/20:40
 * @Description:
 */
public class LambdaTest {
    public static void main(String[] args) {
      List<String> list= Arrays.asList("java","mysql","lambda","spring");
      //传统的打印方法
        for(String item:list){
            System.out.println(item);
        }
        System.out.println();
        //学完lambda之后
        list.forEach((item)->{
            System.out.println(item);
        });
    }
}

2.执行结果:

3.语法注意事项:

  • 如果参数值有一个参数,那么括号可以省略
  • 方法体中只有一行代码,则大括号可以省略
  • 方法体中只有一行语句,并且是return语句,那么大括号包括return都可以省略

五、lambda表达式和函数式接口

下面是一些lambda表达式的举例:

// 1. 不需要参数,返回值为 2

() -> 2
// 2. 接收⼀个参数 ( 数字类型 ), 返回其 2 倍的值
x -> 2 * x
// 3. 接受 2 个参数 ( 数字 ), 并返回他们的和
( x , y ) -> x + y
// 4. 接收 2 int 型整数 , 返回他们的乘积
(int x , int y ) -> x * y
// 5. 接受⼀个 string 对象 , 并在控制台打印 , 不返回任何值 ( 看起来像是返回 void)
(String s ) -> System . out . print ( s )
Lambda 表达式不能直接使⽤。
Lambda 表达式不能直接使⽤,它在使⽤之前必须初始化,lambda 表达式必须借助函数式接⼝
(@FunctionalInterface)来初始化

六、函数式接口

1.定义:⼀个接⼝有且只有⼀个抽象⽅法。
2.如果一个接口有且只有一个抽象方法,那么你可以将他理解为函数式接口,函数式接口可以用 @FunctionalInterface来检查。理论上来说,只要你的接口中存在一个抽象方法,都算是函数式接口。
2.举例说明:

 

 1.变量捕获

lambda表达式在使用外部的变量时,必须要保证在使用之前变量不会更改。使用的时候就是在大括号里不能更改变量的值。如果变量用final修饰更能保证他不被修改,在修改的时候就会报错,如果不使用final修饰,在lambda表达式的时候就会报错。

2.lambda用法

  • map.foreach()

  • list排序

package thread.enumandlambda;

import java.util.*;

/**
 * @Author: wenjingyuan
 * @Date: 2022/10/29/20:40
 * @Description:
 */
public class LambdaTest {
    public static void main(String[] args) {
        //printTest();
        // interFaceTest();
       //  mapTest();
        //创建并初始化list
        List<Integer> list=Arrays.asList(5,3,6,8,2);
        System.out.println("排序前"+list);
        list.sort(new Comparator<Integer>() {
            @Override
            public int compare(Integer o1, Integer o2) {
                return o1-o2;
            }
        });
        System.out.println("排序后"+list);

    }

    private static void printTest() {
        List<String> list= Arrays.asList("java","mysql","lambda","spring");
        //传统的打印方法
        for(String item:list){
            System.out.println(item);
        }
        System.out.println();
        //学完lambda之后
        list.forEach((item)->{
            System.out.println(item);
        });
    }

    private static void mapTest() {
        HashMap<String,String> map=new HashMap<String,String>(){{
            put("java","java value");
            put("mysql","mysql value");
        }};
        //jdk 1.8之前
        for(Map.Entry<String,String> item:map.entrySet()){
            System.out.println(item.getKey()+":"+item.getValue());
        }
        //lambda
        map.forEach((k,v)->{
            System.out.println(k+":"+v);
        });
    }

    /**
     * 函数式接口实例
     */
    private static void interFaceTest() {
        MyFunctionalInterface myFunctionalInterface=(o)->{
            for(Object item: o){
                System.out.println(item);
            }
        };
        myFunctionalInterface.myMethod("java","Mysql");
    }
}
  • list查找过滤

private static void distinctTest() {
        List<String> list=Arrays.asList("java","lambda","mysql","spring","lambda","springBoot");
        //jdk1.8之前
        for(String item:list){
            if(item.equals("lambda")){
                System.out.println("");
            }
        }
        //lambda之后
        List<String> finds=list.stream().filter(
                s->s.equals("lambda")).collect(Collectors.toList());
        System.out.println(finds);
    }

七、总结

最后我想说,自律即是自由!希望大家在最后都有一个不错的收获!今天还听到一个很有意思的话想分享给自己和大家,用我自己的话总结一下,最终能够在这个世界生存留下来的人,不是最聪明的,也不是最厉害的,是适应能力最强的人!
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值