集合常用stream操作

1.1 集合多字段分组求和

//分组求和:key-> List<物料编码、工厂编码>  value-> 求和数量
Map<List<String>, Double> sumQty = list.stream().collect(Collectors.groupingBy(f -> Arrays.asList(f.getMatnr(), f.getWerks()), Collectors.summingDouble(p -> {
    return p.getMenge().doubleValue();
})));

1.2 获取字段去重集合

List<String> materialCodes = list.stream().map(QuotaReport::getMaterialCode).distinct().collect(Collectors.toList());

1.3、list转map

materialMinPrices.stream().collect(Collectors.toMap(s -> {
            return s.getMaterialCode() + s.getAllExtraAttributesBaseId();
        }, QuotaReportVO::getMinPrice))
plantDTOList.stream().collect(Collectors.toMap(BasePlantDTO::getPlantCode,basePlantDTO -> basePlantDTO))

1.4、集合中某个字段值重复次数

//1、字段分组,统计数量
 Map<String, Long> columnCountMap = entityList.stream().collect(Collectors.groupingBy(PurchaseFocusConfig::getCloumnCode, Collectors.counting()));
 //2、过滤数量>1数据
    List<String> repeatColumns = columnCountMap.entrySet().stream().filter(entry -> entry.getValue() > 1).map(entity -> entity.getKey()).collect(Collectors.toList());
        

1.5、Arrays转为List

 Arrays.asList(new String[]{"priceDifference","price"}.clone());

1.6、单字段求和

list.stream().mapToDouble(p -> p.getDemandQty().doubleValue()).sum()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

笑谈子云亭

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值