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