CodeGym /Blogue Java /Random-PT /LinkedHashMap em Java
John Squirrels
Nível 41
San Francisco

LinkedHashMap em Java

Publicado no grupo Random-PT

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. LinkedHashMap em Java - 1

Recursos do LinkedHashMap

  1. Ele contém valores baseados na chave.
  2. Ele contém elementos únicos.
  3. Pode ter uma chave nula e vários valores nulos.
  4. Não está sincronizado.
  5. 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 .
  1. LinkedHashMap mantém o pedido de inserção enquanto implementa a lista duplamente vinculada internamente.
  2. LinkedHashMap precisa de mais armazenamento porque implementa LinkedList .
  3. Em relação ao desempenho, o LinkedHashMap é mais lento que o HashMap .

Conclusão

Esperamos que você entenda a classe LinkedHashMap em Java, seus diferentes métodos e sua implementação. Sinta-se à vontade para praticar e voltar sempre que precisar de mais ajuda. Feliz aprendizado!
Comentários
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION