Lambda表达式

前言

jdk1.8引入了很多新特性,其中Lambda表达式和stream API是最值得的我们学习的,这里就先讲讲其中的Lambda表达式

Lambda简介

Lambda表达式在很多编程语言中都有,jdk中的Lambda可以把理解为一个匿名函数,可以将函数作为参数传递,这样简化代码,同时可读性也优于冗长的内部类、匿名类。

先举两个例子对比一下:

  1. 创建线程
//原来的写法
Thread t1 = new Thread(new Runnable(){
    @Override
    public void run(){
        System.out.println("原来的写法")
    }
});
t1.start();

//lambda写法
Thread t2 = new Thread(() -> System.out.println("lambda写法"));
t2.start();

2.排序

//原来的写法
Integer[] arrInt = new Integer[]{1,2,3};
Arrays.sort(arrInt,new Comparator<Integer>(){
    public int compare(Integer a,Integer b){
        return a-b;
    }
});
System.out.println("升序:"+Arrays.toString(arrInt));

//lambda表达式
Integer[] arr = new Integer[]{1,2,3};
Arrays.sort(arr,(a,b) -> a-b);
System.out.println("lambda升序:"+Arrays.toString(arr));

通过上面两个例子可以看出使用lambda表达式,可以使内部类代码极大的简化。

Lambda表达式基础语法

  1. 操作符

    ​ JDK8中引入了一个新的操作符“->”,该操作符可以称之为lambda操作符。该操作符把lambda分成两部分:

    ​ 左侧:lambda表达式的参数列表;

    ​ 右侧:lambda表达式需要实现的功能,即lambda体;

  2. 语法格式

    1. 无参数,无返回值:() -> System.out.println("lambda写法");
    2. 有一个参数,无返回值:(x) -> System.out.println("xxxxx");
    3. 有两个以上参数,有返回值,并且lambda体中有多条语句:
    Comparator<Integer> com = (x, y) -> {
                System.out.println("语句1");
                System.out.println("语句2");
                return Integer.compare(x, y);
            };
    
    1. 有两个以上的参数,有返回值,但只有一条语句:
     Comparator<Integer> com = (x,y) -> Integer.compare(x,y);
    
  3. 函数式接口

    ​ 若接口中只有一个抽象方法,那么该接口被称为“函数式接口”。可以使用@FuntionalInterface注解来修饰,用于检查该接口是否是函数式接口。

Lambda应用

  1. 定义一个函数式接口:
public interface ISay{
    public String say(String msg);
}
  1. 定义一个方法来调用接口对象
public static String doSay(String user,String msg,ISay isay){
    return user + ":" + isay.say(msg);
};
  1. 传统的调用方式:
String str = doSay("李四","你好!",new ISay(){
    @Override
    public String say(String msg){
        return msg;
    }
});
System.out.println(str);

输出结果:李四:你好!

  1. 使用lambda表达式
String str2 = doSay("张三","你好!",msg -> msg);
System.out.println(str2);

输出结果:张三:你好!


以上
@Fzxey

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值