Java8 λ表达式学习整理

个人理解:λ表达式是一个匿名方法的实现,它的目标对象是一个(可以匹配到多个)函数式接口(不算上Object类中的方法只有一个自己的抽象方法的接口即函数式接口),这里的匿名方法是指函数式接口中唯一抽象方法。

即可以将λ表达式赋值给一个函数式接口,所以当方法的形参是一个函数式接口时可以通过λ表达式替换达到简化效果,而Java8以前都是采用内部类的方式

λ表达式使用场景

1、替换以前广泛使用的内部匿名类,如上面提到的Runable接口在Java8中就是一个典型的函数式接口,在新建一个线程时可有如下写法:

//之前的写法
Thread oldThread = new Thread( new Runnable () {
        @Override
        public void run() {
            System.out.println("This is from an anonymous class.");
        }
    } );
   //采用λ表达式的写法
    Thread newThread = new Thread( () -> {
        System.out.println("This is from an anonymous method (lambda exp).");
    } );

2、集合类批处理操作

集合类批处理操作是指实现集合类的内部迭代,即交由类库处理而非自己编写迭代/遍历代码

forEach是jdk8中Iterable新增的方法被关键字default修饰,Collection、List、Set直接或者间接实现了Iterable也就获得该默认实现的forEach方法,Map是在自己的接口里面加入了default类型的forEach,因为Map是key:value键值对形式的所以你会看到forEach方法接收的函数式接口类型是不一样的

 

推荐阅读:http://swiftlet.net/archives/3331

                 https://blog.youkuaiyun.com/aa8568849/article/details/52650452

                 https://segmentfault.com/a/1190000012213954

                 https://www.cnblogs.com/yulinfeng/p/8452379.html

                 https://blog.youkuaiyun.com/yangjiachang1203/article/details/52619795

                 https://blog.youkuaiyun.com/zixiao217/article/details/70196751

                 https://blog.youkuaiyun.com/dounine/article/details/53357914

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值