Introdução aos Java Streams
Os Java Streams são uma poderosa ferramenta para manipulação de coleções de dados. Com eles, é possível realizar operações de forma declarativa e concisa. Neste tutorial, iremos explorar as funções filter
, map
e reduce
, que são fundamentais para a transformação e agregação de dados.
O que é o método filter?
O método filter
é utilizado para filtrar elementos de uma coleção com base em uma condição específica. Por exemplo, se quisermos selecionar apenas os números pares de uma lista, poderíamos fazer o seguinte:
List<Integer> numeros = Arrays.asList(1, 2, 3, 4, 5, 6);
List<Integer> pares = numeros.stream()
.filter(num -> num % 2 == 0)
.collect(Collectors.toList());
Neste código, criamos uma lista de números e utilizamos o método filter
para obter apenas os números pares. O resultado será uma nova lista contendo os elementos 2, 4 e 6.
A função map e sua utilidade
Por sua vez, o método map
é utilizado para transformar os elementos de uma coleção. Por exemplo, se quisermos dobrar os valores de uma lista de números:
List<Integer> numeros = Arrays.asList(1, 2, 3, 4);
List<Integer> dobrados = numeros.stream()
.map(num -> num * 2)
.collect(Collectors.toList());
Aqui, cada número da lista original foi multiplicado por 2, resultando em uma nova lista com os elementos 2, 4, 6 e 8.
O que é reduce?
O método reduce
é usado para combinar elementos de uma coleção em um único resultado. Um exemplo comum é a soma de todos os elementos de uma lista:
List<Integer> numeros = Arrays.asList(1, 2, 3, 4);
int soma = numeros.stream()
.reduce(0, (a, b) -> a + b);
Neste caso, estamos somando todos os números da lista, começando com 0 como valor inicial. O resultado final será 10, que é a soma de 1 + 2 + 3 + 4.
Exemplos práticos
A utilização dessas funções pode ser combinada para realizar operações mais complexas. Por exemplo, suponha que temos uma lista de objetos Pessoa
, e queremos filtrar apenas as pessoas maiores de idade e depois coletar seus nomes:
List<Pessoa> pessoas = Arrays.asList(new Pessoa("João", 16), new Pessoa("Maria", 20), new Pessoa("Pedro", 18));
List<String> nomesMaiorIdade = pessoas.stream()
.filter(p -> p.getIdade() >= 18)
.map(Pessoa::getNome)
.collect(Collectors.toList());
Nesse exemplo, filtramos as pessoas maiores de idade e transformamos a lista de Pessoa
em uma lista de nomes, resultando em uma nova lista com os nomes das pessoas que atendem ao critério.
Conclusão
O uso das funções filter
, map
e reduce
em Java Streams permite que você escreva um código mais limpo e eficiente. Essas ferramentas são essenciais para quem deseja trabalhar com coleções de dados em Java de forma moderna e eficaz. Com a prática, você se tornará cada vez mais proficiente na manipulação de dados utilizando Streams.
- Pratique com diferentes tipos de coleções.
- Tente combinar várias operações em um único stream.
- Leia a documentação oficial para entender todos os métodos disponíveis.
Aplicações
- Filtragem de dados em listas e conjuntos.
- Transformação de coleções para diferentes formatos.
- Agregação de valores para cálculos.
Entenda as funções filter, map e reduce para manipulação eficiente de dados
As funções filter
, map
e reduce
são pilares do Java Streams e oferecem uma maneira poderosa de trabalhar com dados. Esses métodos ajudam a tornar o código mais legível e fácil de manter, permitindo operações complexas em uma única linha. Aprender a utilizá-los é um passo importante para qualquer desenvolvedor Java que queira escrever código moderno e eficiente.
Algumas aplicações:
- Filtrar listas de dados com base em critérios específicos.
- Transformar dados em novos formatos ou estruturas.
- Realizar operações matemáticas sobre coleções de números.
Dicas para quem está começando
- Comece com listas pequenas para entender o fluxo.
- Experimente diferentes combinações de métodos.
- Consulte a documentação para exemplos adicionais.
Contribuições de Lucas Martins