Java 8 Stream - Reduzir o combinador da função não sendo executado [duplicado]
Esta pergunta já tem uma resposta aqui:
Java8 stream.reduce () com 3 parâmetros - obtendo transparência 2 respostasEu estou usando um método simples de redução com três argumentos viz. identidade, acumulador e combinador. Aqui está o meu código ...
Integer ageSumComb = persons
.stream()
.reduce(0,
(sum, p) -> {
System.out.println("Accumulator: Sum= "+ sum + " Person= " + p);
return sum += p.age;
},
(sum1, sum2) -> {
System.out.format("Combiner: Sum1= " + sum1 + " Sum2= "+ sum2);
return sum1 + sum2;
Mas o que está acontecendo é que o Combiner não está sendo executado. Eu não estou entendendo o motivo por trás disso. Aqui está a minha saída ..
Accumulator: Sum= 0 Person= Max
Accumulator: Sum= 18 Person= Peter
Accumulator: Sum= 41 Person= Pamela
Accumulator: Sum= 64 Person= David
Accumulator: Sum= 76 Person= Pam
No entanto, não houve erro de compilação e nenhuma exceção e minha saída é exatamente correta, o mesmo que eu esperava. Mas não entendi por que o combinador não foi executado.