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 interfaceCollection.
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