Sobes.tech
Middle

Descreva a hierarquia de coleções em Java.

sobes.tech IA

Resposta da IA

A hierarquia de coleções em Java baseia-se num conjunto de interfaces que fornecem uma forma padrão de representar grupos de objetos.

Interfaces principais:

  • Collection: interface raiz da hierarquia. Define operações básicas aplicáveis a todas as coleções: adição, remoção, verificação de elementos existentes, determinação do tamanho.
  • Set: coleção que não contém duplicados e não tem uma ordem definida de elementos.
  • List: coleção ordenada com acesso aos elementos por índice. Pode conter duplicados.
  • Queue: coleção destinada a armazenar elementos antes do processamento. Geralmente segue a regra FIFO (First-In, First-Out), mas existem outras implementações.
  • Deque: fila de duas extremidades. Suporta adição e remoção de elementos de ambos os lados.
  • Map: coleção que armazena pares de "chave-valor". As chaves devem ser únicas. Não estende a interface Collection.

Principais classes que implementam estas interfaces (exemplos):

Interface Classes que a implementam (exemplos) Descrição
Set HashSet, LinkedHashSet, TreeSet Sem duplicados. HashSet - sem ordem, LinkedHashSet - mantém a ordem de inserção, TreeSet - ordenado.
List ArrayList, LinkedList, Vector Ordenada. ArrayList - baseada em array, LinkedList - baseada em lista ligada, Vector - sincronizada (obsoleta).
Queue LinkedList, PriorityQueue Para processamento. LinkedList - FIFO, PriorityQueue - baseada em prioridades.
Deque ArrayDeque, LinkedList Fila de duas extremidades. ArrayDeque - baseada em array, LinkedList - baseada em lista ligada.
Map HashMap, LinkedHashMap, TreeMap, Hashtable Chave-valor. HashMap - sem garantia de ordem, LinkedHashMap - mantém a ordem de inserção/acesso, TreeMap - ordenado por chaves, Hashtable - sincronizado (obsoleto).

Exemplo de uso de ArrayList:

// Criação de ArrayList de strings
List<String> fruits = new ArrayList<>();
// Adição de elementos
fruits.add("Apple");
fruits.add("Banana");
fruits.add("Orange");
// Acesso por índice
String firstFruit = fruits.get(0); // Apple
// Tamanho da coleção
int size = fruits.size(); // 3

Exemplo de uso de HashSet:

// Criação de HashSet de inteiros
Set<Integer> numbers = new HashSet<>();
// Adição de elementos (duplicados são ignorados)
numbers.add(1);
numbers.add(2);
numbers.add(2); // Ignorado
// Tamanho da coleção
int size = numbers.size(); // 2

Exemplo de uso de HashMap:

// Criação de HashMap: chave - String, valor - Integer
Map<String, Integer> ages = new HashMap<>();
// Adição de pares chave-valor
ages.put("Alice", 30);
ages.put("Bob", 25);
// Obter valor por chave
int ageAlice = ages.get("Alice"); // 30
// Verificar se a chave existe
boolean hasBob = ages.containsKey("Bob"); // true