DEV Community

Cover image for Entendendo as Coleções do Java: List, Set e Map
Isaac Maciel
Isaac Maciel

Posted on

Entendendo as Coleções do Java: List, Set e Map

As coleções em Java são estruturas de dados poderosas que permitem armazenar e manipular grandes quantidades de dados de maneira eficiente. O framework Java Collections Framework (JCF) fornece várias interfaces e classes que facilitam a manipulação de dados, sendo as mais utilizadas List, Set e Map. Neste post, vamos explorar cada uma delas, suas funcionalidades e como usá-las no seu código.

O que são Coleções?
Uma coleção é simplesmente um objeto que armazena dados. A vantagem das coleções em Java é que elas oferecem implementações flexíveis e eficientes de várias estruturas de dados. O Java Collections Framework inclui interfaces como Collection, List, Set, Queue, Map, entre outras, e classes como ArrayList, HashSet, HashMap, etc.

1. List
Uma List é uma coleção ordenada que permite elementos duplicados. Ou seja, os elementos em uma lista mantêm uma ordem específica e podem se repetir. O acesso aos elementos é feito por índices, tornando-a semelhante a um array dinâmico.

Características:

  • Ordenada: A ordem dos elementos é mantida.
  • Indexada: Cada elemento tem um índice e pode ser acessado diretamente.
  • Permite duplicatas: Você pode ter elementos repetidos.

Exemplos de Implementação:
ArrayList
Exemplos de Uso:

import java.util.*;

public class ListaExemplo {
    public static void main(String[] args) {
        List<String> lista = new ArrayList<>();

        // Adicionando elementos
        lista.add("Java");
        lista.add("Python");
        lista.add("JavaScript");

        // Acessando elementos
        System.out.println(lista.get(0)); // Saída: Java

        // Iterando pela lista
        for (String linguagem : lista) {
            System.out.println(linguagem);
        }
    }
}
Enter fullscreen mode Exit fullscreen mode

2. Set
O Set é uma coleção que não permite elementos duplicados. Se você tentar adicionar um elemento já presente no conjunto, a operação falhará. Não há garantia de que a ordem dos elementos será mantida, embora algumas implementações, como o LinkedHashSet, mantenham a ordem de inserção.

Características:

  • 1. Não permite duplicatas: Não há elementos repetidos.
  • 2. Não indexada: Você não pode acessar os elementos por índice.
  • 3. Sem ordem garantida: A ordem dos elementos não é garantida, mas algumas implementações, como LinkedHashSet, mantêm a ordem de inserção.

Exemplos de Implementação:
HashSet

Exemplos de Uso:

import java.util.*;

public class SetExemplo {
    public static void main(String[] args) {
        Set<String> conjunto = new HashSet<>();

        // Adicionando elementos
        conjunto.add("Java");
        conjunto.add("Python");
        conjunto.add("JavaScript");
        conjunto.add("Java"); // Este não será adicionado, pois é um duplicado

        // Iterando pelo set
        for (String linguagem : conjunto) {
            System.out.println(linguagem);
        }
    }
}

Enter fullscreen mode Exit fullscreen mode

3. Map
O Map é uma coleção que armazena pares chave-valor. Ele não permite chaves duplicadas, mas os valores podem ser duplicados. É ideal para situações onde você precisa associar uma chave única a um valor, como um dicionário.

Características:

  • Chave única: Cada chave no mapa deve ser única.
  • Permite valores duplicados: O valor associado a uma chave pode ser repetido.
  • Não indexado: Os elementos não têm uma posição específica, mas podem ser acessados pelas chaves.

Exemplos de Implementação:
HashMap

Exemplos de Uso:

import java.util.*;
 public class MapExemplo {
     public static void main(String[] args) {
         Map<String, Integer> mapa = new HashMap<>();

         // Adicionando pares chave-valor
         mapa.put("Java", 1995);
         mapa.put("Python", 1991);
         mapa.put("JavaScript", 1995);

        // Acessando valores por chave
        System.out.println("Ano de lançamento do Java: " + mapa.get("Java"));

         // Iterando pelo mapa
         for (Map.Entry<String, Integer> entry : mapa.entrySet()) {
             System.out.println(entry.getKey() + " foi lançado em " + entry.getValue());
         }
     }
 }

Enter fullscreen mode Exit fullscreen mode

Considerações Finais
As coleções são uma parte fundamental do Java, e entender como e quando usar List, Set e Map pode melhorar significativamente a eficiência do seu código. Aqui estão algumas dicas:

Use uma List quando a ordem de inserção for importante ou quando você precisar acessar elementos por índice.

Use um Set quando precisar garantir que não haja elementos duplicados e não se importar com a ordem.

Use um Map quando precisar associar uma chave a um valor e garantir que as chaves sejam únicas.

Com essas ferramentas, você pode resolver muitos problemas de manipulação de dados de forma eficiente e com boas práticas de programação.

Top comments (0)