O que é LinkedHashMap em Java?
A classe LinkedHashMap da estrutura Collections é a implementação Hashtable e LinkedList da interface Map . Ele armazena suas entradas em uma Hashtable e usa internamente uma lista duplamente vinculada para manter o pedido de inserção. Este LinkedList define a ordem de inserção que é a ordem em que as chaves foram inseridas no Map . O HashMap forneceu o benefício de inserção , pesquisa e exclusão rápidas , mas no LinkedHashMap a implementação do LinkedList também mantém a ordem de inserção.
Recursos do LinkedHashMap
- Ele contém valores baseados na chave.
- Ele contém elementos únicos.
- Pode ter uma chave nula e vários valores nulos.
- Não está sincronizado.
- Ele mantém o pedido de inserção, o que torna a iteração mais cara.
Fatores de desempenho
O desempenho do LinkedHashMap depende principalmente de dois fatores descritos abaixo.Capacidade
A capacidade significa o número de entradas que pode armazenar. A capacidade padrão é 16 se nenhum parâmetro for fornecido. Fator de carga O fator de carga significa que sempre que o HashMap é preenchido com uma porcentagem específica fornecida como parâmetro, um novo HashMap é criado com o dobro do tamanho e todas as entradas são movidas para este novo. O fator de carga padrão para um HashMap é 0,75 . Também é conhecido como taxa de preenchimento .Declaração de LinkedHashMap
Para criar um LinkedHashMap , primeiro precisamos importar o pacote, que é java.util.LinkedHashMap .LinkedHashMap<Key, Value> lhm = new LinkedHashMap<>(12, 0.5f);
Aqui, Key é o tipo de chave no mapa. Valor é o tipo de valores mapeados no mapa. 12 é a capacidade, o que significa que armazenará 12 entradas no mapa. 0,5f é o fator de carga, o que significa que quando 50% estiver preenchido, ele criará um novo mapa e moverá todos os valores para este novo.
Métodos comuns de LinkedHashMap
Aqui está uma lista de alguns métodos comuns de LinkedHashMap .Métodos | Descrição |
---|---|
claro() | Remove todos os mapeamentos do mapa. |
contémValue(valor do objeto) | Retornará verdadeiro se o mapa mapear a chave para o valor especificado. |
conjunto de entrada() | Retorna a visualização Definir dos mapeamentos no mapa. |
get(chave do objeto) | Retorna o valor da chave especificada ou nulo se nenhuma chave for especificada. |
conjunto de chaves() | Retorna a visualização Set das chaves no mapa. |
valores() | Retorna a visualização Coleção dos valores no mapa. |
getOrDefault(chave do objeto, V defaultValue) | Retorna o valor ao qual a chave especificada está associada ou defaultValue se nenhuma chave estiver associada. |
Exemplo de LinkedHasMap
import java.util.LinkedHashMap;
class Main {
public static void main(String[] args) {
// Creating a LinkedHashMap of odd numbers
LinkedHashMap<String, Integer> oddNumbers = new LinkedHashMap<>();
// Using the put() method
oddNumbers.put("One", 1);
oddNumbers.put("Three", 3);
System.out.println("LinkedHashMap1: " + oddNumbers);
// Creating another LinkedHashMap
LinkedHashMap<String, Integer> numbers = new LinkedHashMap<>();
numbers.put("Two", 2);
// Using putAll() method
numbers.putAll(oddNumbers);
System.out.println("LinkedHashMap2: " + numbers);
// Using entrySet() method
System.out.println("Key/Value mappings: " + numbers.entrySet());
// Using keySet() method
System.out.println("Keys: " + numbers.keySet());
// Using values() method
System.out.println("Values: " + numbers.values());
// Using get() method
int value1 = numbers.get("Three");
System.out.println("Returned Number: " + value1);
// Using getOrDefault() method
int value2 = numbers.getOrDefault("Five", 5);
System.out.println("Returned Number: " + value2);
// Using remove() method
int value = numbers.remove("Two");
System.out.println("Removed value: " + value);
// Using entrySet() method
System.out.println("Key/Value mappings: " + numbers.entrySet());
}
}
Saída
LinkedHashMap1: {Um = 1, Três = 3} LinkedHashMap2: {Dois = 2, Um = 1, Três = 3} Mapeamentos de chave/valor: [Dois = 2, Um = 1, Três = 3] Chaves: [Dois, Um , Três] Valores: [2, 1, 3] Número retornado: 3 Número retornado: 5 Valor removido: 2 Mapeamentos de chave/valor: [Um=1, Três=3]
LinkedHashMap vs HashMap
Vamos ver algumas diferenças entre eles, visto que ambos implementam a interface Map .- LinkedHashMap mantém o pedido de inserção enquanto implementa a lista duplamente vinculada internamente.
- LinkedHashMap precisa de mais armazenamento porque implementa LinkedList .
- Em relação ao desempenho, o LinkedHashMap é mais lento que o HashMap .
GO TO FULL VERSION