Sobes.tech
Junior

Quais são as implementações de coleções na linguagem de programação Java?

sobes.tech IA

Resposta da IA

  • Interfaces:

    • Collection: Interface base para todas as coleções.
    • List: Coleção ordenada (com índices).
    • Set: Coleção que não contém duplicados.
    • SortedSet: Coleção sem duplicados, cujos elementos estão ordenados.
    • Map: Matriz associativa (chave-valor).
    • SortedMap: Matriz associativa ordenada por chaves.
    • Queue: Coleção para armazenar elementos antes do seu processamento.
    • Deque: Fila de duas pontas.
  • Classes (principais implementações):

    • Para List:

      • ArrayList: Array dinâmico. Acesso rápido por índice, operações de inserção/remoção lentas no meio.
      • LinkedList: Lista duplamente ligada. Acesso lento por índice, operações rápidas de inserção/remover no meio.
      • Vector: Antigo, sincronizado, equivalente a ArrayList.
      • Stack: Subclasse de Vector, que implementa uma pilha (LIFO).
    • Para Set:

      • HashSet: Implementação baseada em tabela de hash. Não garante ordem.
      • LinkedHashSet: Baseado em tabela de hash e lista ligada. Mantém a ordem de inserção.
      • TreeSet: Baseado em árvore vermelho-preto. Elementos ordenados em ordem crescente.
    • Para Map:

      • HashMap: Baseado em tabela de hash. Não garante ordem de pares chave-valor.
      • Hashtable: Antigo, sincronizado, equivalente a HashMap.
      • LinkedHashMap: Baseado em tabela de hash e lista ligada. Mantém a ordem de inserção.
      • TreeMap: Baseado em árvore vermelho-preto. Pares ordenados por chave.
    • Para Queue:

      • PriorityQueue: Fila de prioridade. Elementos extraídos na ordem natural ou por comparador.
      • ArrayDeque: Implementação de fila de duas pontas baseada em array.
  • Utilitários:

    • Collections: Métodos estáticos para trabalhar com coleções (ordenar, buscar, sincronizar, etc.).
// Exemplo de uso de ArrayList
List<String> names = new ArrayList<>();
names.add("Alice");
names.add("Bob");
System.out.println(names.get(0)); // Alice
// Exemplo de uso de HashSet
Set<Integer> numbers = new HashSet<>();
numbers.add(1);
numbers.add(2);
numbers.add(1); // Duplicado não será adicionado
System.out.println(numbers.size()); // 2
// Exemplo de uso de HashMap
Map<String, Integer> ages = new HashMap<>();
ages.put("Alice", 30);
ages.put("Bob", 25);
System.out.println(ages.get("Alice")); // 30
// Exemplo de uso de PriorityQueue
Queue<Integer> priorityQueue = new PriorityQueue<>();
priorityQueue.add(3);
priorityQueue.add(1);
priorityQueue.add(2);
System.out.println(priorityQueue.poll()); // 1 (menor prioridade)