Начиная с 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