Java高级核心玩法JDK8 Lambda表达式

DBC 2K 0

讲解什么是函数式编程和什么是lambda表达式

解说

在JDK8之前,Java是不⽀持函数式编程的,所谓的函数编程,即可理解是将⼀个函数(也称为“⾏
为”)作为⼀个参数进⾏传递, ⾯向对象编程是对数据的抽象(各种各样的POJO类),⽽函数式编
程则是对⾏为的抽象(将⾏为作为⼀个参数进⾏传递)

java创建线程再熟悉不过了

jdk8之前创建线程

        new Thread(new Runnable() {
            @Override
            public void run() {
                System.out.println("你是猪头");
            }
        });

jdk8之后Lambda表达式则只需要使⽤⼀句话

 new Thread(() -> System.out.println("你是猪头"));

集合容器⾥⾯的字符串排序 使⽤前

    public static void main(String[] args) {
        List<String> list = Arrays.asList("aaa", "ggg", "ffff", "ccc");
        Collections.sort(list, new Comparator<String>() {
                    @Override
                    public int compare(String a, String b) {
                        return b.compareTo(a);
                    }
                }
        );
        for (String string : list) {
            System.out.println(string);
        }
    }

使用后

    public static void main(String[] args) {
        List<String> list = Arrays.asList("aaa", "ggg", "ffff", "ccc");
        Collections.sort(list, (a, b) -> b.compareTo(a)
        );
        for (String string : list) {
            System.out.println(string);
        }
    }
  • ambda表达式 使⽤场景(前提):⼀个接⼝中只包含⼀个⽅法,则可以使⽤Lambda表达式,这样的接⼝称之为“函数接⼝”
    • 第⼀部分为括号内⽤逗号分隔的形式参数,参数是函数式接⼝⾥⾯⽅法的参数;
    • 第⼆部分为⼀个箭头符号:->;第三部分为⽅法体,可以是表达式和代码块
    • 参数列表 :
      • 括号中参数列表的数据类型可以省略不写
      • 括号中的参数只有⼀个,那么参数类型和()都可以省略不写
      • ⽅法体:
        • 如果{}中的代码只有⼀⾏,⽆论有返回值,可以省略{},return,分号,要⼀起省略,其他
          则需要加上
  • 好处
    • Lambda 表达式的实现⽅式在本质是以匿名内部类的⽅式进⾏实现
    • 重构现有臃肿代码,更⾼的开发效率,尤其是集合Collection操作的时候

发表评论 取消回复
表情 图片 链接 代码

分享