stream使用案例

文章介绍了在SQLServer环境下,如何利用JavaStreamAPI进行数据处理,包括按ID分组获取名称字段的列表,根据字段去重得到实体列表,以及按特定字段进行求和操作。示例代码展示了Stream的不同用法。
摘要由CSDN通过智能技术生成

1、业务场景需求:按id进行分组,获取名称字段的list集合。
如果是mysql数据库,使用groupBy+GroupConcat可以很方便处理,但是数据库是sql server,故采用Stream流处理方式。

 Map<String, List<EnPlanYearVo>> groupByMap = list.stream().collect(Collectors.groupingBy(EnPlanYearVo::getVariableId));
            for (Map.Entry<String, List<EnPlanYearVo>> entry : groupByMap.entrySet()) {
                //entry.getValue是分组后的list
                System.out.println("分组对应的key:" + entry.getKey() + ";对应的value:" + entry.getValue() + ";");
                 //获取分组之后的名称字段list集合
               List<String> monthList = entry.getValue().stream()
                        .map(EnPlanYearVo::getMonthName)
                        .collect(Collectors.toList());
            }

2、根据某个字段获取去重后的实体list

List effectList = patientServerVOList.stream().collect(Collectors.collectingAndThen(Collectors.toCollection(()->new TreeSet<>(Comparator.comparing(PatientServerVO::getPatId))),ArrayList::new));

3、list按某个字段求和

 long materialCount = energyCarList.stream().filter(e ->e.getClassCode().equals(carVo.getClassCode())).count();

4、list按某个字段且有筛选条件后求和

long materialSixCount = energyCarList.stream().filter(e ->e.getClassCode().equals(carVo.getClassCode())).filter(e ->"国六".equals(e.getEmissionStage())).count();```

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值