JDK8 Lambda表达式

一、什么是函数式编程和什么是lambda表达式

在JDK8之前,Java是不⽀持函数式编程的。

所谓的函数编程:即可理解是将⼀个函数(也称为“行为”)作为⼀个参数进⾏传递, ⾯向对象编程是对数据的抽象(各种各样的POJO类),而函数式编程则是对行为的抽象(将⾏为作为⼀个参数进行传递)

Lambda 表达式是 JDK8 的一个新特性,可以取代大部分的匿名内部类,写出更优雅的 Java 代码,尤其在集合的遍历和其他集合操作中,可以极大地优化代码结构。

JDK 也提供了大量的内置函数式接口供我们使用,使得 Lambda 表达式的运用更加方便、高效。

二、举例子说明

(1)java创建线程

jdk8之前创建线程

new Thread(new Runnable() {
     @Override
     public void run() {
         System.out.println("以前创建线程的方式");
     }
});

jdk8之后使用Lambda表达式创建线程则只需要使⽤⼀句话

new Thread(() -> System.out.println("使用Lambda之后创建线程的方式"));

(2)集合容器⾥⾯的字符串排序

使⽤前

    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);
    }

使用后

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);
 }

三、Lambda语法讲解

(1)lambda表达式 使⽤场景(前提)

⼀个接⼝中只包含⼀个⽅法,则可以使⽤Lambda表达式,这样的接⼝称之为“函数接⼝”

(2)语法 (params) -> expression

第⼀部分为括号内⽤逗号分隔的形参,参数是函数式接⼝⾥⾯⽅法的参数

第⼆部分为⼀个箭头符号:->

第三部分为⽅法体,可以是表达式和代码块

还有以下几点需要注意:

  • 参数列表:括号中参数列表的数据类型可以省略不写

                         括号中的参数只有⼀个,那么参数类型和()都可以省略不写

  • 方法体:如果{ }中的代码只有⼀⾏(⽆论有没有返回值),则 { },return,分号,这三个都可以省略,而且要⼀起省略,其他情况则需要加上

(3)好处

 Lambda 表达式的实现⽅式在本质是以匿名内部类的⽅式进⾏实现

重构现有臃肿代码,更⾼的开发效率,尤其是集合Collection操作的时候,后续会讲到

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

曹举的个人博客

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值