java-Stream.reduce()在实际开发中的应用

1.Stream.reduce() API介绍

Stream API 提供了丰富的中间函数,归并函数和终端函数,这些函数还支持并行化执行。而归并流的操作的作用是从一个序列的元素重复应用合并操作,最后产生一个单一的结果返回。本文,我们讲探讨 Stream.reduce() 常用的功能并举例说明。

关键概念:初始值的定义(Identity),累加器(Accumulator),组合器(Combiner) 在深入讨论 Stream.reduce() 功能之前,让我们先了解几个概念

    Identity : 定义一个元素代表是归并操作的初始值,如果Stream 是空的,也是Stream 的默认结果 Accumulator: 定义一个带两个参数的函数,第一个参数是上个归并函数的返回值,第二个是Strem 中下一个元素。 Combiner: 调用一个函数来组合归并操作的结果,当归并是并行执行或者当累加器的函数和累加器的实现类型不匹配时才会调用此函数。

2.案例说明

// 计算附加费用
    List<ExtraFeeVO> extraFeeList = orderEntity.getExtraFeeList();
    if (CollectionUtils.isNotEmpty(extraFeeList)) {
          
   
      totalExtraFee = extraFeeList.stream().map(ExtraFeeVO::getExtraPrice)
          .reduce(BigDecimal.ZERO, BigDecimal::add);
    }
    ```
经验分享 程序员 微信小程序 职场和发展