Operações Intermediárias em Java Streams: Desbravando Map, Filter, Sorted e Distinct
Java Streams oferecem uma maneira poderosa e elegante de manipular coleções de dados. As operações intermediárias são ferramentas essenciais nesse processo, permitindo transformar e filtrar elementos dentro do fluxo. Neste post, vamos explorar algumas das operações intermediárias mais comuns disponíveis em Java Streams, como map
, filter
, sorted
e distinct
, com exemplos práticos para ilustrar seu uso.
Map
A operação map
é usada para transformar cada elemento do fluxo de acordo com uma função especificada. Isso permite converter os elementos de um tipo para outro ou aplicar alguma lógica de transformação.
var palavras = List.of("maçã", "banana", "laranja");
var comprimentos = palavras.stream()
.map(String::length)
.collect(Collectors.toList());
System.out.println(comprimentos); // Saída: [5, 6, 7]
No exemplo acima, map
é usado para transformar cada string no comprimento correspondente dessa string.
Filter
A operação filter
é usada para selecionar apenas os elementos que atendem a determinada condição, descartando os que não atendem.
var numeros = List.of(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
var pares = numeros.stream()
.filter(num -> num % 2 == 0)
.collect(Collectors.toList());
System.out.println(pares); // Saída: [2, 4, 6, 8, 10]
Neste exemplo, filter
é usado para selecionar apenas os números pares da lista.
Sorted
A operação sorted
é usada para classificar os elementos do fluxo com base em um critério especificado.
var palavras = List.of("maçã", "banana", "laranja");
var ordenadas = palavras.stream()
.sorted()
.collect(Collectors.toList());
System.out.println(ordenadas); // Saída: [banana, laranja, maçã]
Neste exemplo simples, as palavras são classificadas em ordem alfabética.
Distinct
A operação distinct
é usada para remover elementos duplicados do fluxo.
var numeros = List.of(1, 2, 2, 3, 3, 3, 4, 4, 4, 4);
var distintos = numeros.stream()
.distinct()
.collect(Collectors.toList());
System.out.println(distintos); // Saída: [1, 2, 3, 4]
Aqui, distinct
garante que apenas valores únicos sejam mantidos na lista resultante.
Conclusão
As operações intermediárias em Java Streams fornecem um conjunto robusto de ferramentas para manipular e processar dados de forma eficiente. Dominar operações como map
, filter
, sorted
e distinct
permite escrever código mais limpo e expressivo para lidar com coleções de dados em Java.
Experimente essas operações em seus próprios projetos e explore outras operações intermediárias disponíveis em Java Streams para aproveitar ao máximo essa poderosa API.
Espero que este post tenha sido útil!