Collections em Java: Conceitos e Principais Tópicos
- #Java
Introdução
As Collections em Java fazem parte do framework java.util e oferecem estruturas de dados eficientes para armazenar, manipular e processar conjuntos de objetos. Elas fornecem implementações padrão para diversas estruturas, como listas, conjuntos e filas, tornando o código mais flexível e reutilizável.
Principais Interfaces do Java Collections Framework (JCF)
O Java Collections Framework é baseado em interfaces que definem o comportamento das coleções. As principais interfaces são:
1. Collection<E>
Interface mãe das principais coleções do Java, fornecendo métodos como add(), remove(), contains() e size().
2. List<E>
Uma coleção ordenada que permite elementos duplicados.
- Implementações:
ArrayList<E>- Melhor para leitura e acesso rápido aos elementos.LinkedList<E>- Melhor para inserção e remoção rápidas.
3. Set<E>
Uma coleção que não permite elementos duplicados.
- Implementações:
HashSet<E>- Baseado em tabela hash, não garante ordem.TreeSet<E>- Mantém os elementos ordenados.LinkedHashSet<E>- Mantém a ordem de inserção.
4. Queue<E>
Segue o princípio FIFO (First-In-First-Out).
- Implementações:
PriorityQueue<E>- Ordena automaticamente os elementos.ArrayDeque<E>- Pode ser usada como fila ou pilha.
5. Map<K, V>
Uma estrutura que armazena pares chave-valor.
- Implementações:
HashMap<K, V>- Não garante ordem.TreeMap<K, V>- Mantém a ordenação das chaves.LinkedHashMap<K, V>- Mantém a ordem de inserção.
Principais Métodos das Collections
add(E e): Adiciona um elemento.remove(Object o): Remove um elemento.size(): Retorna o tamanho da coleção.contains(Object o): Verifica se um elemento está presente.isEmpty(): Verifica se a coleção está vazia.
Uso de Generics
Collections suportam Generics, permitindo tipos seguros sem a necessidade de casting.
List<String> lista = new ArrayList<>();
lista.add("Java");
String linguagem = lista.get(0); // Não precisa de casting
Comparando ArrayList e LinkedList
Característica - ArrayList - LinkedList
Acesso Rápido - Sim - Não
Inserção Rápida - Não - Sim
Consome mais Memória - Não - Sim
Iterando sobre Coleções
Usando for-each
for (String item : lista) {
System.out.println(item);
}
Usando Iterator
Iterator<String> iterator = lista.iterator();
while (iterator.hasNext()) {
System.out.println(iterator.next());
}
Usando Lambda e Method Reference
Com Lambda
lista.forEach(item -> System.out.println(item));
Com Method Reference
lista.forEach(System.out::println);
Conclusão
O uso adequado das Collections em Java melhora a eficiência e legibilidade do código. Compreender a diferença entre List, Set, Queue e Map é essencial para escolher a melhor estrutura para cada situação.



