记一次项目中使用的lambda表达式

场景: 店铺销量排行榜统计,报表微服务返回List<DTO>如下

public class ShopSaleDto implements Serializable{

    private Integer shopId;
    private Integer totalSaleNum;

需求:需要返回店铺详情信息及销量

步骤1:取出List<DTO>中的shopId集合调用店铺微服务查询店铺列表,并过滤掉关闭的店铺(lambda表达式简单省略),结果如下

public class ShopInfo implements Serializable {	
	/*
	 店铺编号
	 */
	@Id
	@GeneratedValue(strategy = GenerationType.AUTO)
	@ApiModelProperty(value = "自增")
	@Column(name = "id")
	private Integer id;

愿景:ShopSaleDto和ShopInfo匹配相同的shopId组装成新的ShopInfoDto对象(该对象包含店铺信息和销量信息)返回给前端

public class ShopInfoDto implements Serializable,Comparable<ShopInfoDto>{

    private Integer shopId;

    private Integer totalSaleNum;

    /**店铺名字**/
    private String shopName;

    /**店铺头像**/
    private String shopAvatar;

代码1:

//将List<ShopSaleDto>转成map,key是唯一值(shop_id)
Map<Integer, ShopSaleDto> dtoMap = list.stream().collect(Collectors.toMap(d -> d.getShopId(), d -> d));

代码2:

//匹配ShopInfoDto
 infoList = finalShop.stream().map(s -> {
    return toShopInfo(dtoMap.get(s.getId()), s);
 }).collect(Collectors.toList());

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值