Dominando Java LinkedHashMap: Criação, Operações e Comparação de Desempenho
Dominando Java LinkedHashMap: Criação, Operações e Comparação de Desempenho
Descubra como criar, manipular e comparar o LinkedHashMap do Java com exemplos do mundo real e melhores práticas.
A classe LinkedHashMap no framework de coleções do Java combina buscas rápidas de uma tabela hash com ordem de iteração previsível, graças a uma lista duplamente encadeada interna que preserva ordem de inserção ou acesso.
Criando um LinkedHashMap
Para usar um LinkedHashMap, importe java.util.LinkedHashMap e instancie. O construtor aceita capacidade inicial, fator de carga e uma flag opcional accessOrder.
// LinkedHashMap com capacidade inicial 8 e fator de carga 0.6
LinkedHashMap<Chave, Valor> numeros = new LinkedHashMap<>(8, 0.6f);
Parâmetros:
- capacidade – o número de buckets; padrão é 16.
- fatorDeCarga – dispara redimensionamento quando a tabela está 60% cheia; padrão é 0.75.
- accessOrder –
falsepara ordem de inserção,truepara ordem de acesso menos-recente a mais-recente.
Exemplo com configurações padrão:
LinkedHashMap<Chave, Valor> mapaPadrao = new LinkedHashMap<>();
Criando LinkedHashMap a Partir de Mapas Existentes
Copie um mapa existente para um LinkedHashMap para preservar ordem:
LinkedHashMap<String, Integer> numerosPares = new LinkedHashMap<>();
numerosPares.put("Dois", 2);
numerosPares.put("Quatro", 4);
LinkedHashMap<String, Integer> numeros = new LinkedHashMap<>(numerosPares);
numeros.put("Três", 3);
Saída:
LinkedHashMap1: {Dois=2, Quatro=4}
LinkedHashMap2: {Dois=2, Quatro=4, Três=3}
Operações Principais
Inserir Elementos
put(chave, valor)– adiciona ou substitui um mapeamento.putIfAbsent(chave, valor)– adiciona apenas se a chave estiver faltando.putAll(mapa)– mescla outro mapa.
LinkedHashMap<String, Integer> numeros = new LinkedHashMap<>();
numeros.put("Um", 1);
numeros.putIfAbsent("Dois", 2);
numeros.putAll(numerosPares);
Acessar Elementos
Recupere chaves, valores ou entradas:
entrySet()– todos os pares chave/valor.keySet()– todas as chaves.values()– todos os valores.get(chave)– valor ounullse faltando.getOrDefault(chave, padrão)– recuperação segura com fallback.
int val = numeros.get("Três");
int def = numeros.getOrDefault("Cinco", 5);
Remover Elementos
remove(chave)– deleta por chave.remove(chave, valor)– deleta apenas se o valor corresponder.clear()– limpa o mapa.containsKey(chave)– verificação de existência.containsValue(valor)– verificação de existência.size()– número de entradas.isEmpty()– verificação de vazio.
LinkedHashMap vs. HashMap
- LinkedHashMap preserva ordem de inserção ou acesso; HashMap não.
- LinkedHashMap usa memória extra para links de nós.
- A iteração do LinkedHashMap é ligeiramente mais lenta mas oferece ordenação previsível.
Java
- Dominando Operadores Java: Tipos, Sintaxe e Exemplos Práticos
- Comentários em Java: Tipos, Uso e Boas Práticas
- Dominando o Loop for Aprimorado em Java: Sintaxe, Exemplos e Boas Práticas
- Dominando Strings em Java: Criação, Métodos e Boas Práticas
- Dominando Interfaces em Java: Conceitos, Implementação e Boas Práticas
- Dominando Classes Internas Anônimas em Java: Definição, Sintaxe e Exemplos Práticos
- Dominando Try-With-Resources em Java: Gerenciamento Automático de Recursos Explicado
- Anotações em Java Explicadas: Tipos, Posicionamento e Exemplos Práticos
- Asserções em Java: Guia Prático para Detectar Bugs e Garantir Confiabilidade do Código
- Entendendo o Java Vector: Uso, Recursos e Comparação com ArrayList