Sobes.tech
Junior

Que coleções existem em Java?

sobes.tech IA

Resposta da IA

Em Java, existem as seguintes interfaces principais de coleções que fazem parte do Java Collections Framework:

  • Collection: Interface base que define operações comuns sobre grupos de objetos. Dela herdam as subinterfaces:

    • List: Coleção ordenada (sequência). Os elementos podem repetir-se. Suporta acesso por índice.
      • ArrayList: Array regulável. Bom para acesso rápido por índice e adição ao final. Lento para inserir/remover no meio.
      • LinkedList: Lista duplamente ligada. Bom para inserir/remover no início ou no final. Lento para acesso por índice.
      • Vector: Versão sincronizada de ArrayList. Considerada obsoleta.
      • Stack: Herda de Vector, implementa comportamento de pilha (LIFO).
    • Set: Coleção que contém apenas elementos únicos. Não garante ordem.
      • HashSet: Implementado com tabela hash. O mais rápido para adicionar, remover e verificar existência. Não garante ordem.
      • LinkedHashSet: Implementado como tabela hash + lista ligada. Garante ordem de inserção.
      • TreeSet: Implementado com árvore vermelho-preto. Armazena elementos em ordem ordenada. Mais lento que HashSet, mas mais rápido que LinkedHashSet para buscas por intervalos.
    • Queue: Coleção projetada para armazenar elementos antes do processamento (FIFO - First-In, First-Out).
      • PriorityQueue: Os elementos são armazenados de acordo com sua ordem natural ou comparador. Extrai o de maior prioridade.
      • Deque: (Double Ended Queue) Suporta inserção e remoção em ambos os extremos.
        • ArrayDeque: Implementação de Deque baseada em array. Mais eficiente que LinkedList como fila/pilha.
  • Map: Coleção que armazena pares chave-valor. As chaves são únicas.

    • HashMap: Implementado com tabela hash. O mais rápido para adicionar, remover e verificar existência. Não garante ordem das chaves.
    • LinkedHashMap: Implementado como tabela hash + lista ligada. Garante ordem de inserção ou acesso.
    • TreeMap: Implementado com árvore vermelho-preto. Armazena pares chave-valor em ordem ordenada por chaves. Mais lento que HashMap.
    • HashTable: Versão sincronizada de HashMap. Considerada obsoleta.

Existem também classes obsoletas que não fazem parte do JCF, mas às vezes são encontradas:

  • Vector
  • Stack
  • Hashtable
  • Enumeration (interface)