Java

Como agrupar coleções no Java

Neste tutorial veremos como agrupar coleções no Java.


 

Como agrupar coleções no Java
Como agrupar coleções no Java

 

Neste breve tutorial irei mostrar como agrupar coleções no Java,  para realizar o agrupamento de elementos de uma coleção em Java, utilizaremos métodos do pacote stream do Java.

Para nossa implementação será utilizado o tipo de coleção List do Java e  para iniciar vamos começar importando as classes que serão utilizadas no tutorial:

 

import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.function.Function;
import java.util.stream.Collectors;

 

Feito isto, vamos criar a lista que será agrupada, vamos criar uma lista de Strings contendo os nomes das linguagens de programação.

 

List<String> linguagens = Arrays.asList(

  "Java", "Python", "JavaScript",
  "Java", "JavaScript", "Python", "Java"
);

 

Pronto, já podemos iniciar o agrupamento da coleção, no exemplo abaixo será usado a função groupingBy da classe Collectors para agruparmos os elementos repetidos na lista e por consequência trazer a quantidade de vezes que esse elemento se repete, veja o código abaixo:

 

Map<String, Long> resultado = linguagens.stream().collect(
  Collectors.groupingBy(
    Function.identity(),
    Collectors.counting()
  )
);

Uma breve explicação do código acima, primeiro pegamos a nossa variável (linguagem) contendo uma lista de Strings e percorremos cada item usando o método stream() e logo após é utilizado a função collect() passando as funções  o groupingBy para agrupar e as opções indentity() para identificar cada elemento  e o counting() para contar a quantidade de vezes que cada elemento aparece dentro da lista;

Ao finalizar a execução do loop do stream o retorno será guardado em um map que conterá a identificação do elemento da Lista(linguagem) e o total de vezes que cada elemento ocorre dentro da lista.

E usaremos o System.out.println, para exibir o resultado do agrupamento:

System.out.println("List Resultado Agrupado:");
System.out.println(resultado);    

 

Ao rodar o código acima será gerado na tela do terminal a seguinte saída:

 

List Resultado Agrupado:

{Java=3, JavaScript=2, Python=2}

 

Está é uma forma simples e rápida de como podemos agrupar uma coleção em Java usando apenas funções nativas presentes no stream do Java.

E aqui está todo código implementado:

 

import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.function.Function;
import java.util.stream.Collectors;
public class ColecoesGroupingBy {
    public static void main(String args[]){
        List<String> linguagens = Arrays.asList(
            "Java", "Python", "JavaScript",
            "Java", "JavaScript", "Python", "Java"
        );
        Map<String, Long> resultado = linguagens.stream().collect(
            Collectors.groupingBy(
                Function.identity(),
                Collectors.counting()
            )
        );
        System.out.println("List Resultado Agrupado:");
        System.out.println(resultado);        
    }
}

 

Segue abaixo um pequeno Vídeo demonstrando do processo e implementação do código usado neste tutorial:

 

 

Abaixo segue link do Github com o código fonte que utilizei  para implementação deste tutorial:

Código Fonte

 

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *