Что ж, если вы хотите позвонить на уменьшение на IntStream
:
int sum = pojoList.stream()
.mapToInt(ob ->(ob.getA()+ob.getB()))
.reduce(0, (a,b)->a+b);
Конечно, то же самое будет работать на Stream<Integer>
:
int sum = pojoList.stream()
.map(ob ->(ob.getA()+ob.getB()))
.reduce(0, (a,b)->a+b);
или сссылка на метод:
int sum = pojoList.stream()
.map(ob ->(ob.getA()+ob.getB()))
.reduce(0, Integer::sum);
или без map()
:
int sum = pojoList.stream()
.reduce(0, (s,ob)->s+ob.getA()+ob.getB(),Integer::sum);
В этом последнем примере я использую вариант:
<U> U reduce(U identity,
BiFunction<U, ? super T, U> accumulator,
BinaryOperator<U> combiner);
, так какприведенное значение (Integer
) отличается от типа элементов Stream
.
Первый параметр - это значение идентификатора - 0.
Второй параметр добавляет значения getA()
и getB()
текущего элемента Pojo
к промежуточной сумме.
Третий параметр объединяет две частичные суммы.