Guia completo sobre Java Collections

A Java Collections Framework é um dos pilares fundamentais da linguagem Java. Ela fornece estruturas de dados reutilizáveis e algoritmos prontos para manipular grupos de objetos com eficiência. Neste guia, você entenderá desde os conceitos básicos até os detalhes avançados das Collections, com exemplos práticos, explicações diretas e dicas úteis para entrevistas e aplicações reais.

O que é a Java Collections Framework?

A Java Collections Framework (JCF) é um conjunto de interfaces e classes que fornece estruturas de dados e algoritmos prontos para uso, como listas, filas, conjuntos e mapas. Essas estruturas facilitam a manipulação de grupos de objetos de forma consistente e eficiente.

Principais vantagens:

  • Reduz o esforço para criar estruturas de dados próprias.
  • Promove código reutilizável, limpo e performático.
  • Traz algoritmos genéricos como ordenação, busca e filtragem.

Hierarquia de Interfaces

As principais interfaces da Java Collections são:

  • Collection: Interface raiz de todas as coleções.
  • List: Lista ordenada que aceita elementos duplicados. Exemplos: ArrayList, LinkedList.
  • Set: Coleção que não permite elementos duplicados. Exemplos: HashSet, TreeSet.
  • Queue: Trabalha com inserção/remoção em ordem. Exemplos: LinkedList, PriorityQueue.
  • Map: Armazena pares chave/valor. Exemplos: HashMap, TreeMap.

Implementações mais comuns

  • ArrayList: acesso rápido por índice, ideal para listas dinâmicas.
  • LinkedList: melhor desempenho em inserções/remoções frequentes.
  • HashSet: não garante ordem, não aceita duplicados.
  • TreeSet: mantém ordem natural ou personalizada dos elementos.
  • HashMap: armazena chave/valor com alta performance.
  • LinkedHashMap: mantém ordem de inserção.
  • TreeMap: ordenação natural das chaves.
  • Hashtable: versão sincronizada e obsoleta.
  • ConcurrentHashMap: ideal para aplicações concorrentes.

Quando usar cada estrutura?

  • ArrayList: quando o acesso por índice é mais importante que inserções.
  • LinkedList: para inserções e remoções frequentes no meio da lista.
  • HashSet: quando você precisa de unicidade, sem se preocupar com a ordem.
  • TreeSet: quando precisa de ordenação natural ou personalizada.
  • HashMap: ideal para mapear pares chave-valor com rapidez.
  • TreeMap: quando é necessário manter as chaves ordenadas.
  • Queue: para processamento em ordem FIFO.
  • PriorityQueue: quando elementos precisam ser ordenados por prioridade.

Exemplo prático com ArrayList

import java.util.ArrayList;

public class ListaExemplo {
    public static void main(String[] args) {
        ArrayList<String> nomes = new ArrayList<>();
        nomes.add("João");
        nomes.add("Maria");
        nomes.add("Pedro");

        for (String nome : nomes) {
            System.out.println(nome);
        }
    }
}

Métodos úteis nas Collections

  • add(): adiciona elemento.
  • remove(): remove elemento.
  • contains(): verifica se existe.
  • size(): retorna a quantidade de elementos.
  • clear(): remove todos os elementos.
  • isEmpty(): verifica se está vazia.
  • forEach(): permite iterar funcionalmente.

Boas práticas ao usar Collections

  • Programe para a interface sempre que possível (ex: List, Set, Map).
  • Use coleções imutáveis com Collections.unmodifiableList() quando necessário.
  • Use Map.of() ou List.of() (Java 9+) para listas rápidas.
  • Prefira estruturas concorrentes em ambientes multi-thread.
  • Cuidado com NullPointerException ao acessar Maps.

Desafios comuns em entrevistas

  • Ordenação de listas com Comparator.
  • Remoção de duplicatas com Set.
  • Contagem de elementos com Map.
  • Criação de cache com LinkedHashMap.
  • Diferença entre == e equals() nas coleções.

Performance comparativa geral

OperaçãoArrayListLinkedListHashSetHashMap
Inserção (fim)O(1)O(1)O(1)O(1)
Inserção (meio)O(n)O(1)
Acesso por índiceO(1)O(n)O(1)
Busca por valorO(n)O(n)O(1)O(1)

Conclusão

A Collections Framework é essencial para qualquer desenvolvedor Java. Dominar suas interfaces e implementações ajuda a escrever código mais limpo, eficiente e orientado a boas práticas.

Deixe um comentário