Java8 中Lambda表达式实战

 1.传递代码

新建一个类,继承Comparator接口,复写compare方法。

public class AppleComparator implements Comparator<Apple> {
    public int compare(Apple a1, Apple a2){
    return a1.getWeight().compareTo(a2.getWeight());
    }
}
inventory.sort(new AppleComparator());

 

2. 使用匿名内部类

使用匿名内部类,复写compare方法。

public class AppleComparator implements Comparator<Apple> {
    public int compare(Apple a1, Apple a2){
    return a1.getWeight().compareTo(a2.getWeight());
    }
}
inventory.sort(new AppleComparator());

 

3.使用Lambda表达式

用Lambda表达式的不同写法及简化。

inventory.sort((Apple a1, Apple a2)
-> a1.getWeight().compareTo(a2.getWeight())
);
// Lambda从上下文,自动推断参数类型
inventory.sort((Apple a1, Apple a2)
-> a1.getWeight().compareTo(a2.getWeight())
);
//再简化,使用Comparator中的静态方法comparing。可以接受一个Function来提取Comparable键值,并生成一个Comparator对象。
Comparator<Apple> c = Comparator.comparing((Apple a) -> a.getWeight());
​
import java.util.Comparator.comparing;
inventory.sort(comparing((a) -> a.getWeight()));

 

4.使用方法引用

最简洁的书写方式。

inventory.sort(comparing(Apple::getWeight));

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值