您当前的位置: 首页 > 

liaowenxiong

暂无认证

  • 2浏览

    0关注

    1171博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

Lambda表达式的学习

liaowenxiong 发布时间:2021-11-19 19:22:13 ,浏览量:2

文章目录
  • 函数式编程思想
  • 函数式接口
  • Lambda 的使用前提
  • Lambda 的标准格式
  • Lambda 极简特性
  • 演示代码

函数式编程思想

与面向对象编程思想的区别: 1.面向对象的思想是做一件事情,找一个能解决这个事情的对象,调用对象的方法来完成事情 2.函数式编程思想是只要能获取到结果,谁去做的,以什么形式做的都不重要,关心的是结果,不关心过程

函数式接口

有且仅有一个抽象方法的接口称之为“函数式接口”,基于函数式接口可以写 Lambda 表达式用来取代“匿名内部类”的代码语句

Lambda 的使用前提

1.使用 Lambda 必须具有接口,且要求接口中有且仅有一个抽象方法,即接口必须是函数式接口 2.使用 Lambda 必须可以进行上下文推断,也就是方法的参数或者局部变量的数据类型必须是 Lambda 对应的接口类型,才能使用 Lambda 表达式作为该接口的实例对象

Lambda 的标准格式
(接口抽象方法的参数列表)->{实现抽象方法的代码}

Lambda 语句用来简化匿名内部类的代码,所以 Lambda 可以称为是“匿名内部类”的语法糖。

注:用来取代复杂代码语法的简化代码语法称为“语法糖”。

Lambda 极简特性

凡是可以根据上下文推导出的内容都可以省略不写,可以省略的内容如下:

1.参数列表的数据类型可以省略不写 2.参数列表中仅有一个参数,那么数据类型和小括号都可以省略不写 3.方法体中如果只有一行代码,那么可以把大括号 {}return 关键字、分号 ; 全部省略不写(切记,这个规则要求三者必须一起省略才行,否则会报错) 4.没有参数,需要保留小括号

演示代码
package priv.lwx.javaprac.lambda;


import java.util.Arrays;
import java.util.Comparator;

/**
 * @ClassName Demo01Lambda
 * @Description 使用Lambda表达式实现排序规则的演示代码
 * @Author liaowenxiong
 * @Version 1.0
 * @date 2021/8/28 上午8:56
 */

public class Demo01Lambda {

    public static void main(String[] args) {
        WhitePerson[] whitePeople = new WhitePerson[]{
                new WhitePerson("柳岩", 38, "green"),
                new WhitePerson("杨思敏", 45, "blue"),
                new WhitePerson("迪丽热巴", 28, "black")
        };

        // 使用匿名内部类实现排序规则
        Arrays.sort(whitePeople, new Comparator() { // 这个大括号是实现类的类体
            // 实现方法compare
            @Override
            public int compare(WhitePerson o1, WhitePerson o2) { // 这个大括号是方法体
                // 前面的减去后面的,表示升序
                return o1.getAge() - o2.getAge();
            }
        });

        // 使用Lambda语句实现排序规则
        Arrays.sort(whitePeople, (WhitePerson o1, WhitePerson o2) -> { // 这个大括号是方法compare的方法体
            // 这是方法体中的实现代码
            return o1.getAge() - o2.getAge();
        });

        // 对Lambda语句进行简化,称之为Lambda表达式(Expression Lambda)
        Arrays.sort(whitePeople, (o1, o2) -> o1.getAge() - o2.getAge());


        // 排序后,将数组的元素打印输出
        for (WhitePerson whitePerson : whitePeople) {
            System.out.println(whitePerson);
        }
    }
}
关注
打赏
1661566967
查看更多评论
立即登录/注册

微信扫码登录

0.0440s