stream集合

在这里插入图片描述
**现已经有接口实现下面的列表,需要查询上面的总数?不同的包装单位需要单独统计
(签收数量和使用数量是int类型,在返回的时候用 (fhsl||BZZHBDW) fhsl 拼接到一块了,bzzhbdw是包装转换比单位)

List<ShdVo> list2 = new ArrayList<>();
        ShdVo shdVo = new ShdVo();
        shdVo.setName("河北区");
        shdVo.setFhsl(2900);
        shdVo.setSysl(262);
        shdVo.setKcsl(2638);
        shdVo.setBzzhbdw("支");
        shdVo.setDq("120105");
        list2.add(shdVo);

        ShdVo shdVo2 = new ShdVo();
        shdVo2.setName("河北区");
        shdVo2.setFhsl(2900);
        shdVo2.setSysl(262);
        shdVo2.setKcsl(2638);
        shdVo2.setBzzhbdw("支");
        shdVo2.setDq("120105");
        list2.add(shdVo2);

        ShdVo shdVo3 = new ShdVo();
        shdVo3.setName("河东区");
        shdVo3.setFhsl(900);
        shdVo3.setSysl(262);
        shdVo3.setKcsl(638);
        shdVo3.setBzzhbdw("箱");
        shdVo3.setDq("120105");
        list2.add(shdVo3);

        ShdVo shdVo4 = new ShdVo();
        shdVo4.setName("河北区");
        shdVo4.setFhsl(800);
        shdVo4.setSysl(62);
        shdVo4.setKcsl(738);
        shdVo4.setBzzhbdw("箱");
        shdVo4.setDq("120105");
        list2.add(shdVo4);

        ShdVo shdVo5 = new ShdVo();
        shdVo5.setName("河北区");
        shdVo5.setFhsl(100);
        shdVo5.setSysl(100);
        shdVo5.setKcsl(100);
        shdVo5.setBzzhbdw("盒");
        shdVo5.setDq("120105");
        list2.add(shdVo5);
List<String> strings = new ArrayList<>(list2.size());
        for (int i=0;i<list2.size();i++){
            if (!strings.contains(list2.get(i).getBzzhbdw())){
                strings.add(list2.get(i).getBzzhbdw());
            }
        }
        Map<String,String> map =new HashMap<>();
        for (int i=0;i<strings.size();i++){
            int finalI = i;
            map.put(strings.get(finalI),"涉及" + String.valueOf(list2.stream().filter(a ->strings.get(finalI).equals(a.getBzzhbdw())).mapToInt(ShdVo::getFhsl).sum()) + strings.get(finalI));
            map.put(strings.get(finalI) + String.valueOf(i),"已使用" + String.valueOf(list2.stream().filter(a ->strings.get(finalI).equals(a.getBzzhbdw())).mapToInt(ShdVo::getSysl).sum()) + strings.get(finalI));
        }**

首先把返回值的数字和转换比分开来,这样就可以得到’箱’、‘盒’、'瓶’之类的包装单位,去重得到所有的包装单位放到一个list集合里面,但是因为需要根据不同的包装单位去求和,所以把包装单位当成键,总数作为值,下面是用postman得到的返回值
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值