Olá a todos. Eu estava fazendo a redução de uma list para BigDecimal utilizando o seguinte código
BigDecimal receita = lds.stream().filter( l ->
l.getContaContabil().matches("^6212//d.+" &&
l.getNaturezaReceita().matches("^74//d.+") )
.map(LivroDiario :: getValor).reduce(BigDecimal.ZERO,BigDecimal::add);
Mas aqui há um problema, pois na classe LivroDiario tenho um atributo que diz se a operação é um crédito (C) ou Débito (D). Então não basta somar eu precisaria fazer algo do tipo dentro do reduce:
BigDecimal saldo = BigDecimal.ZERO;
for(LivroDiario ld :lds){
if(ld.getTipoMovimento.equals("C"){
saldo = saldo.add(ld.getValor());
}else{
saldo = saldo.subtract(ld.getValor());
}
}
Como posso utilizar essa condicional dentro de uma operação de redução?