List使用Stream对BigDecimal求和方法

      工作中经常碰到List中的对象为BigDecimal类型的,用习惯Stream后,如果用for或者iterator遍历来累加感觉很麻烦,就上网上找了一些方法,希望能帮到大家。

        BigDecimal result2 = userList.stream()
                // 将user对象的age取出来map为Bigdecimal
                .map(User::getAge)
                // 使用reduce()聚合函数,实现累加器
                .reduce(BigDecimal.ZERO,BigDecimal::add);
  • reduce是一个终结操作,它能够通过某一个方法,对元素进行削减操作。该操作的结果会放在一个Optional变量里返回。可以利用它来实现很多聚合方法比如count,max,min等。 
  • T reduce(T identity, BinaryOperator accumulator);
  •  第一个参数是我们给出的初值,第二个参数是累加器,可以自己用实现接口完成想要的操作,这里使用Bigdecimal的add方法 最后reduce会返回计算后的结果

你可能感兴趣的:(Java基础,Java,Stream)