Lambda表达式

左手的ㄟ右手 2021-10-14 00:42 583阅读 0赞

文章目录

      • 前言
      • Lambda简介
      • Lambda表达式基础语法
      • Lambda应用

前言

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

Lambda简介

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

先举两个例子对比一下:

  1. 创建线程

    //原来的写法
    Thread t1 = new Thread(new Runnable(){

    1. @Override
    2. public void run(){
    3. System.out.println("原来的写法")
    4. }

    });
    t1.start();

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

2.排序

  1. //原来的写法
  2. Integer[] arrInt = new Integer[]{ 1,2,3};
  3. Arrays.sort(arrInt,new Comparator<Integer>(){
  4. public int compare(Integer a,Integer b){
  5. return a-b;
  6. }
  7. });
  8. System.out.println("升序:"+Arrays.toString(arrInt));
  9. //lambda表达式
  10. Integer[] arr = new Integer[]{ 1,2,3};
  11. Arrays.sort(arr,(a,b) -> a-b);
  12. 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 com = (x, y) -> {

      1. System.out.println("语句1");
      2. System.out.println("语句2");
      3. return Integer.compare(x, y);
      4. };
    4. 有两个以上的参数,有返回值,但只有一条语句:

      Comparator com = (x,y) -> Integer.compare(x,y);

  3. 函数式接口

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

Lambda应用

  1. 定义一个函数式接口:

    public interface ISay{

    1. public String say(String msg);

    }

  2. 定义一个方法来调用接口对象

    public static String doSay(String user,String msg,ISay isay){

    1. return user + ":" + isay.say(msg);

    };

  3. 传统的调用方式:

    String str = doSay(“李四”,”你好!”,new ISay(){

    1. @Override
    2. public String say(String msg){
    3. return msg;
    4. }

    });
    System.out.println(str);

输出结果:李四:你好!

  1. 使用lambda表达式

    String str2 = doSay(“张三”,”你好!”,msg -> msg);
    System.out.println(str2);

输出结果:张三:你好!


以上
@Fzxey

发表评论

表情:
评论列表 (有 0 条评论,583人围观)

还没有评论,来说两句吧...

相关阅读

    相关 lambda表达式

    作用:极大精简代码量 副作用:太过精简,以至于维护时难以阅读 表现形式:本质上是一个匿名方法。让我们来看下面这个例子: public int add(int

    相关 Lambda表达式

    Lambda表达式支持将代码块作为方法的参数,它允许使用更简洁的代码来创建只有一个抽象方法的接口,亦即是函数式接口(FunctionalInterface) 如果不采用Lam

    相关 Lambda表达式

    lambda表达式是对匿名方法的一种改进,具有更加简洁的语法和更易理解的形式,lambda表达式可以包括表达式和语句,并且可以用与创建委托或表达式目录树类型。 lambda表

    相关 lambda表达式

    一、定义 `Lambda` 表达式是一种可用于创建 委托 或 表达式目录树 类型的 匿名函数 。通过使用 `lambda` 表达式,可以写入可作为参数传递或作为函数调用值