使用 Java 8 Stream API List转Map的几种形式总结

概要

经常遇到List需要装Map的几种方式总结。话不多说,上代码:

技术细节

1 、List list 转换为 Map<String, ParaPartner> map

 Map<String, ParaPartner> paraPartnerMap = paraPartnerList.stream()
                .collect(Collectors.toMap( item->
                        item.getCompanyType() + "_" + item.getItemCode(), // 键:从对象中提取
                        partner -> partner,  // 值:对象本身
                        (existing, replacement) -> existing // 处理重复键(保留已存在的值)
                ));

2、List 转换为 Map<String, List>

Map<String, List<ParaPartner>> paraPartnerMap = paraPartnerList.stream()
    .collect(Collectors.groupingBy(
        ParaPartner::getCategory // 分组键(例如 getCategory() 方法)
    ));

3、List 转换为 Map<String, Integer> 统计

Map<String, Integer> categoryTotalScoreMap = paraPartnerList.stream()
    .collect(Collectors.groupingBy(
        ParaPartner::getCategory,
        Collectors.summingInt(ParaPartner::getScore) // 每组 score 的总和
    ));
Map<String, Integer> purCgMap = paraPartnerList.stream().filter(p->p.getTransportType() == 1)
                .collect(Collectors.groupingBy(ParaPartner::getMaterialCode,
                        Collectors.mapping(ParaPartner::getQuantity,
                                Collectors.reducing(0, Integer::sum))));

小结

怎么说,是不是总结的很好呀。
###技术分享###

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值