前言:我们假设有这样一个场景,一个电商订单中,有各种优惠券促销活动,比如一个订单有用了店铺优惠券(减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)