HashMap / Hashtable, LinkedHashMap e TreeMap

A ideia básica de um mapa é que ele mantenha associações de valores-chave (pares) para que você possa procurar um valor usando uma chave.

HashMap / Hashtable

O HashMap possui implementação baseada em uma tabela de hash. (Use essa classe em vez do Hashtable, que é uma classe herdada). O HashMap fornece um mapa não classificado e não ordenado. Quando você precisa de um mapa e não se importa com o pedido (quando itera), o HashMap é a escolha certa. As chaves do HashMap são como Set significa que nenhuma duplicação é permitida e desordenada, enquanto os valores podem ser qualquer objeto, mesmo nulo ou duplicado, também é permitido. O HashMap é muito semelhante ao Hashtable. A única diferença é que o Hashtable tem todo o método sincronizado para segurança do encadeamento, enquanto o HashMap possui métodos não sincronizados para obter melhor desempenho.

Podemos visualizar o HashMap como o diagrama abaixo, onde temos as chaves conforme o código hash e os valores correspondentes.

O HashMap fornece desempenho em tempo constante para inserir e localizar pares. O desempenho pode ser ajustado por meio de construtores que permitem definir a capacidade e o fator de carga da tabela de hash.

Construtores HashMap

HashMap ()

Construtor HashMap padrão (com capacidade padrão de 16 e fator de carga 0,75)

HashMap(Map<? extends KeyObject, ? extends ValueObject> m)

Isso é usado para criar o HashMap com base na implementação de mapa existente m.

HashMap(int capacidade)

Isso é usado para inicializar o HashMap com capacidade e fator de carga padrão.

HashMap(int capacidade, float carregaFator)

Isso é usado para inicializar o HashMap com capacidade e fator de carga personalizado.

As operações básicas do HashMap (put, get, containsKey, containsValue, size e is Empty) se comportam exatamente como suas contrapartes no Hashtable. O HashMap possui o método toString () substituído para imprimir os pares de valores-chave facilmente. O programa a seguir ilustra o HashMap. Mapeia nomes para salário. Observe como uma visualização de conjunto é obtida e usada.

import java.util.*;

public class ArmazenaSalarioFuncionario {

public static void main(String[] args) {