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.