list 转map,计算相同key值下对象数量的和

1,将list通过某个字段转为map
2,计算相同key中对象中数量的和

public static void main(String[] args) {
        ArrayList<TypeSourceVo> personList = new ArrayList<>();
        TypeSourceVo vo1 = new TypeSourceVo();
        TypeSourceVo vo2 = new TypeSourceVo();
        TypeSourceVo vo3 = new TypeSourceVo();
        vo1.setType("qd");
        vo2.setType("qd");
        vo3.setType("qhiuiuew");
        vo1.setNum(32);
        vo3.setNum(25);
        vo2.setNum(62);
        personList.add(vo1);
        personList.add(vo2);
        personList.add(vo3);
        // 求集合中对象的年龄的总和
        Optional<Integer> reduce3 = personList.stream().map(p -> p.getNum()).reduce(Integer::sum);
        System.out.println(reduce3);  //Optional[50]
		//记录另一种方式
		 //Map<String, List<String>> map = vos.stream().collect(
         //           Collectors.groupingBy(
         //                   DisposalVo::getStreetName, Collectors.mapping(
         //                          DisposalVo::getStatus, Collectors.toList())));
        Map<String, List<TypeSourceVo>> collect = personList.stream().collect(Collectors.groupingBy(TypeSourceVo::getType));
        for (Map.Entry<String, List<TypeSourceVo>> entry : collect.entrySet()) {
            System.out.println(entry.getKey() + "------" + entry.getValue());
            String key = entry.getKey();
            Optional<Integer> reduce = entry.getValue().stream().map(vo -> vo.getNum()).reduce(Integer::sum);

            System.out.println("type为:"+key+",数量为:"+reduce);
        }
    }
@Data
@ApiModel("类别来源TypeSourceVo")
public class TypeSourceVo implements Serializable {

    @ApiModelProperty("类别")
    private String type;

    @ApiModelProperty("数量")
    private Integer num;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

焚目圣僧渡众生

你的 一角将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值