List<BigDecimal>求和

2023-10-21 12:37:40 浏览数 (2)

将 List<BigDecimal> 求和

代码语言:javascript复制
public static void main(String[] args) {
    List<BigDecimal> list = new ArrayList<>();
    // 假数据
    list.add(BigDecimal.valueOf(1.1));
    list.add(BigDecimal.valueOf(1.2));
    list.add(BigDecimal.valueOf(1.3));
    list.add(BigDecimal.valueOf(1.4));
  // 流式操作
    BigDecimal decimal = list.stream().reduce(BigDecimal.ZERO, BigDecimal::add);
    // 打印结果
    System.out.println(decimal);
}

list.stream().reduce() 1、stream 中的 reduce 的主要作用就是将[stream]中元素进行组合,组合的方式可以是加减乘除,也可以是拼接等。 2、BigDecimal.ZERO就像new BigDecimal(0),它是一个预定义的常量。 3、reduce 一共有三种实现:

  1. T reduce(T identity, BinaryOperator accumulator); 该实现有起始值 identity, 起始值的类型决定了返回结果的类型,通过 accumulator 操作最终得到 identity 类型的返回结果
  2. Optional<T>reduce(BinaryOperator accumulator); 该实现只有一个参数 accumulator , 由于没有办法确定具体的返回结果,所以该方法返回的是 Optional
  3. <U> U reduce(U identity, BiFunction accumulator, BinaryOperator combiner); 该方法有三个参数 identity 、 accumulator 、combiner ,该方法通过 identity 和 accumulator的处理得出最终结果,结果和第一个参数的类型相同

而我们使用的方便是第一种reduce的实现,需要传入一个BinaryOperator接口,继承了BiFunction接口 简单说 就是需要传入2个同类型参数,返回同类型的参数

0 人点赞