lambda的日常使用(多条件分组,最大值,最小值等)


1,多条件分组;对list中的实体的多个属性进行分组;需要注意的是:集合的对象元素需要重写hashCode和equals,才会起作用,并且提供一个有参构造;

Map<B2BSettlement, List<B2BSettlement>> b2BSettlementListMap = b2bSettlementDTOs.stream().collect(groupingBy((b2bSettlement->
new B2BSettlement(b2bSettlement.getServiceSellerId(),b2bSettlement.getServiceBuyerId(),b2bSettlement.get))));

  另一种写法:

            HashMap<B2BSettlement, List<B2BSettlement>> map = b2bSettlementDTOs.stream()
                    .collect(groupingBy(b -> new B2BSettlement(b.getServiceSellerId(),
                                    b.getServiceBuyerId(),
                                    b.getServiceTypeId(),
                                    b.getFirstCategoryId(),
                                    b.getTaxRate(),
                                    b.getState(),
                                    b.getSettlementRules()),
                            HashMap::new, toList()));

  一个属性的分组:

Map<BigDecimal, List<B2BSettlement>> b2BSettlementListMap 
= b2bSettlementDTOs.stream().collect(groupingBy(B2BSettlement::getTaxRate));

 

2,对集合中的某个金额进行加总;

BigDecimal amount = combatTeamEntities.stream().map(CombatTeamEntity::getActivityAmountOne).reduce(BigDecimal::add).get();

3,对一个map的key,value进行操作;

                b2bSettlementDTOs = b2BSettlementListMap.entrySet().stream().map(e -> {
                    BigDecimal taxRate = e.getKey();
                    List<B2BSettlement> settlements = e.getValue();
                    return this.createNewSettlement(params.getSettlementRules(), taxRate, settlements);
                }).collect(Collectors.toList());

4,集合中最大日期,最小日期

最大日期
        Date maxDate = settlements.stream().filter(Objects::nonNull)
                .max(Comparator.comparing(B2BSettlement::getConfirmDate)).get().getConfirmDate();
最小日期
        Date minDate = settlements.stream().filter(Objects::nonNull)
                .min(Comparator.comparing(B2BSettlement::getConfirmDate)).get().getConfirmDate();

 5,bigdecimal大于0

settlementObj.getSettlementAmount().compareTo(BigDecimal.ZERO)

 

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM