Начиная с Java 8, мы можем суммировать BigDecimal с помощью метода Stream.reduce().
Как суммировать BigDecimal
Сначала создадим список, состоящий из элементов BigDecimal:
List<BigDecimal> numbers = new ArrayList<>(); numbers.add(BigDecimal.valueOf(10.1)); numbers.add(BigDecimal.valueOf(89.9)); numbers.add(BigDecimal.valueOf(50.5));
Затем получим из списка стрим его элементов и воспользуемся методом Stream.reduce для того, чтобы суммировать все элементы стрима:
BigDecimal total = numbers.stream().reduce(BigDecimal.ZERO, BigDecimal::add); System.out.println(total); // 150.5
Метод Stream.reduce принимает два аргумента – начальное значение и функцию-аккумулятор, которая складывает два числа (предыдущее значение аккумулятора и следующий элемент в стриме).
Исходный код
import java.math.BigDecimal; import java.util.ArrayList; import java.util.List; public class SumBigDecimalStream { public static void main(String[] args) { List<BigDecimal> numbers = new ArrayList<>(); numbers.add(BigDecimal.valueOf(10.1)); numbers.add(BigDecimal.valueOf(89.9)); numbers.add(BigDecimal.valueOf(50.5)); BigDecimal total = numbers.stream().reduce(BigDecimal.ZERO, BigDecimal::add); System.out.println(total); // 150.5 } }
Заключение
С помощью метода Stream.reduce() довольно просто суммировать все BigDecimal в стриме.
Как суммировать BigDecimal с помощью Stream