Article image
Josimar Renepont
Josimar Renepont19/08/2024 23:46
Compartilhe

Collections Java

  • #Java

As collections em Java são estruturas de dados que permitem armazenar, acessar e manipular grupos de objetos de forma eficiente. Elas fazem parte do framework de collections do Java, que oferece várias interfaces e classes para trabalhar com conjuntos de dados de maneira flexível e poderosa. Vou te explicar os principais conceitos e as principais interfaces e classes que compõem o framework de collections em Java.

Principais Interfaces do Framework de Collections:

Collection: É a interface raiz de todas as coleções. Ela define métodos básicos como add(), remove(), size(), isEmpty(), e contains(). No entanto, você não pode instanciar uma Collection diretamente; em vez disso, você usa uma das suas subinterfaces.

List: Uma List é uma coleção ordenada que permite elementos duplicados. Cada elemento tem um índice associado, começando em zero.

Implementações comuns:

ArrayList: Baseada em um array dinâmico, permite acesso rápido aos elementos, porém é lenta para inserções e remoções no meio da lista.

LinkedList: Baseada em uma lista duplamente encadeada, é mais rápida para inserções e remoções, mas o acesso aos elementos é mais lento em comparação com ArrayList.

Set: Um Set é uma coleção que não permite elementos duplicados. A ordem dos elementos pode não ser garantida.

Implementações comuns:

HashSet: Implementado com uma tabela hash, oferece desempenho constante para operações básicas.

  • Muito comum seu uso, ao não ter prioridade para manter ordem dos elementos ao ser inseridos.

LinkedHashSet: Como HashSet, mas mantém a ordem de inserção dos elementos.

TreeSet: Implementado como uma árvore de busca binária (árvore rubro-negra), mantém os elementos ordenados e oferece operações básicas com tempo logarítmico.

  • Árvore rubro-negra: tipo avançado de árvore binária de busca, possui características especiais para garantir que a árvore permaneça balanceada.

Queue: Uma Queue (fila) é uma coleção que mantém a ordem de inserção dos elementos e segue a regra FIFO (First-In-First-Out), onde o primeiro elemento a entrar é o primeiro a sair.

Implementações comuns:

LinkedList: Também pode ser usada como uma fila.

PriorityQueue: Uma fila que ordena os elementos conforme a ordem natural ou por meio de um comparador.

Map: Um Map mapeia chaves para valores, ou seja, é uma coleção de pares chave-valor. Uma chave única está associada a um valor.

Implementações comuns:

HashMap: Implementado com uma tabela hash, oferece desempenho constante para operações básicas, mas não garante a ordem dos elementos.

Exemplo:

HashMap<String, Integer> hashMap = new HashMap<>();

hashMap.put("Banana", 5);

hashMap.put("Maça", 10);

hashMap.put("Laranja", 7);

LinkedHashMap: Mantém a ordem de inserção dos pares chave-valor.

TreeMap: Implementado como uma árvore de busca binária (árvore rubro-negra), mantém as chaves ordenadas e oferece operações básicas com tempo logarítmico.

Exemplo:

TreeMap<String, Integer> treeMap = new HashMap<>();

treeMap.put("Banana", 5);

treeMap.put("Maça", 10);

treeMap.put("Laranja", 7);

  • Obs.: aqui mantém ordenação dos elementos, onde será exibido em ordem alfabética.

Como Escolher a Coleção Adequada

  • Se você precisa de uma lista ordenada com acesso rápido por índice, use ArrayList.
  • Se você precisa de uma lista onde inserções e remoções rápidas no início e meio são importantes, use LinkedList.
  • Se você precisa garantir que não haja duplicatas e a ordem não importa, use HashSet.
  • Se você precisa de um conjunto que mantém a ordem de inserção, use LinkedHashSet.
  • Se você precisa de um conjunto ordenado, use TreeSet.
  • Se você precisa de um mapeamento chave-valor sem ordem específica, use HashMap.
  • Se você precisa de um mapeamento chave-valor com a ordem de inserção garantida, use LinkedHashMap.
  • Se você precisa de um mapeamento chave-valor ordenado pelas chaves, use TreeMap.

Conclusão:

As coleções em Java são extremamente poderosas e flexíveis, oferecendo diferentes opções para armazenar e manipular dados conforme as necessidades da aplicação. Conhecer as características e diferenças entre List, Set, Queue, e Map é essencial para escolher a estrutura de dados correta para cada situação.

Compartilhe
Comentários (0)