reduce
Trabalhando com reduce
O método reduce
é uma poderosa operação da Streams API que permite acumular os elementos de uma stream em um único valor, de acordo com uma função especificada.
Sintaxe
A sintaxe básica do reduce
é simples. Ele aceita dois argumentos: o valor inicial (ou identidade) e uma função que define a operação de redução.
List<Integer> numeros = Arrays.asList(1, 2, 3, 4, 5);
int soma = numeros.stream()
.reduce(0, (total, valor) -> {
// Operação de redução
});
Exemplo
Vamos ver um exemplo prático de como usar o reduce
para calcular a soma dos elementos de uma lista:
List<Integer> numeros = Arrays.asList(1, 2, 3, 4, 5);
int soma = numeros.stream()
.reduce(0, (total, valor) -> {
System.out.println("Valor acumulado: " + total);
System.out.println("Valor a ser somado: " + valor);
return total + valor;
});
System.out.println("Resultado da soma: " + soma); // Resultado da soma: 15
Este código acumula a soma dos elementos da lista numeros
. A saída será:
Valor acumulado: 0
Valor a ser somado: 1
Valor acumulado: 1
Valor a ser somado: 2
Valor acumulado: 3
Valor a ser somado: 3
Valor acumulado: 6
Valor a ser somado: 4
Valor acumulado: 10
Valor a ser somado: 5
Resultado da soma: 15
Dicas
- O
reduce
é útil para realizar operações de agregação em uma coleção, como soma, multiplicação, concatenação, entre outros. - Certifique-se de fornecer um valor inicial apropriado para a operação de redução, pois ele será retornado se a stream estiver vazia.
Limitações
É importante notar que o reduce
pode não ser a escolha mais eficiente para todas as operações de agregação, especialmente em streams paralelas. Para operações de soma, por exemplo, é preferível usar sum()
.
O reduce
é uma ferramenta poderosa para realizar operações de agregação em uma coleção. Experimente diferentes operações de redução e veja como elas podem ser aplicadas em seus projetos.