Java8 lambda对Map集合处理的优化

本文探讨了如何使用Java8的lambda表达式优化Map集合处理,特别是在统计电商订单中各类优惠券金额时的应用。通过示例展示了传统的if-else、三元运算符以及使用Map的merge方法结合lambda进行优化的方式,解释了merge方法的工作原理和BiFunction接口的运用。
摘要由CSDN通过智能技术生成

前言:我们假设有这样一个场景,一个电商订单中,有各种优惠券促销活动,比如一个订单有用了店铺优惠券(减100),商品优惠券(减50),满减优惠券(减35),当然优惠券可以叠加,比如这个单有用了两张店铺优惠券,我们需要统计某类优惠券共减去多少金额,处理成一个Map集合,Map集合的键key是优惠券名称,值value是金额。

本文涉及的代码在github上,点击 链接 可查看源码。

  • 优惠券Coupon类(此处省略get、set、constructor等方法):
public class Coupon {
    /**
     * 优惠券名称
     */
    private String name;

    /**
     * 优惠券金额
     */
    private BigDecimal amount;
}

我们假设订单中的优惠券信息如下:

{
    "couponList":[
        {
            "店铺优惠券":100
        },
        {
            "商品优惠券":50
        },
        {
            "店铺优惠券":100
        },
        {
            "满减优惠券":35
        }
    ]
}

这里简单地写一个方法来表示订单中的优惠券金额集(请忽略魔法值),方法返回一个Coupon优惠券集合:

    private static List<Coupon> couponList() {
        Coupon coupon1 = new Coupon("店铺优惠券", new BigDecimal("100"));
        Coupon coupon2 = new Coupon("商品优惠券", new BigDecimal("50"));
        Coupon coupon3 = new Coupon("店铺优惠券", new BigDecimal("100"));
        Coupon coupon4 = new Coupon("满减优惠券", new BigDecimal("35"));
        List<Coupon> couponList = new ArrayList<>(4)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值