Java8之Lambda表达式

Java8之Lambda表达式

第三章、Lambda表达式

1、基础概念

image-20200925101009761
  • Before
Comparator<Apple> byWeight = new Comparator<Apple>() {
     public int compare(Apple a1, Apple a2){
     return a1.getWeight().compareTo(a2.getWeight());
     }
};
  • After
Comparator<Apple> byWeight =
(Apple a1, Apple a2) -> a1.getWeight().compareTo(a2.getWeight());
  • java中有效的Lambda表达式
//第一个Lambda表达式具有一个String类型的参数并返回一个int。Lambda没有return语句,因为已经隐含了return
(String s) -> s.length()
//第二个Lambda 表达式有一个 Apple 类型的 参数并返回一 个boolean(苹 果的重量是否 超过150克)
(Apple a) -> a.getWeight() > 150
//第三个Lambda表达式具有两个int类型的参数而没有返回值(void返回)。注意Lambda表达式可以包含多行语句,这里是两行
(int x, int y) -> {
 System.out.println("Result:");
 System.out.println(x+y);
}
//第四个Lambda表达式没有参数,返回一个int
() -> 42
//第五个Lambda表达式具有两个Apple类型的参数,返回一个int:比较两个Apple的重量
(Apple a1, Apple a2) -> a1.getWeight().compareTo(a2.getWeight())
    
    
() -> {}
() -> "Raoul"
() -> {return "Mario";}
  • 使用案例
//布尔表达式 
(List<String> list) -> list.isEmpty()
//创建对象 
() -> new Apple(10)
//消费一个对象 
(Apple a) -> {
 	System.out.println(a.getWeight());
}
//从一个对象中选择/抽取 
(String s) -> s.length()
//组合两个值 
(int a, int b) -> a * b
//比较两个对象 
(Apple a1, Apple a2) -> a1.getWeight().compareTo(a2.getWeight())

2、函数式接口

  • 一言以蔽之,函数式接口就是只定义一个抽象方法的接口。
  • 比如

image-20200925102310159
  • @FunctionalInterface注解是标注这个类是函数式接口类,通常只做标识提醒用,无任何其他实质性的作用,@FunctionalInterface不是必需的,但对于为此设计的接口而言,使用它是比较好的做法。它就像是@Override 标注表示方法被重写了。

  • 为了总结关于函数式接口和Lambda的讨论,表总结了一些使用案例、Lambda的例子,以 及可以使用的函数式接口。

image-20200925142452842

Q.E.D.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

水豚少年的码农生活

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

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

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

打赏作者

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

抵扣说明:

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

余额充值