HOWTO · Java

Diferença entre hashtable e hashmap em Java

Este artigo apresenta as diferenças entre hashtable e hashmap em Java.

Este tutorial apresenta as diferenças entre Hashtable e HashMap em Java e também lista alguns códigos de exemplo para entender o tópico.

Hashtable é uma classe na estrutura de coleções Java que é usada para armazenar dados em pares chave-valor. É uma classe legada em Java e trabalha com o conceito de hash para armazenar elementos. Nas versões mais recentes do Java, o Hashtable não é recomendado. Devemos preferir usar HashMap que seja mais avançado do que Hashtable. Consulte a tabela abaixo que resume as principais diferenças entre Hashtable e HashMap em Java.

Hashtable vs HashMap

Hashtable HashMap
Sincronizado Não sincronizado
Nulo não permitido Permitir nulo
Aula legada Não é legado
Está lento Isso é rápido

Na tabela de comparação acima, podemos ver claramente as principais diferenças entre Hashtable e HashMap. Agora, vamos ver alguns exemplos.

Como Hashtable é sincronizado internamente, isso torna Hashtable um pouco mais lento do que HashMap.

Crie Hashtable em Java

Neste exemplo, estamos criando Hashtable. É a maneira mais simples de criar Hashtable, e só precisamos importar Hashtable em nosso código. Esta classe está localizada no pacote java.util. Veja o exemplo abaixo.

import java.util.Hashtable;

public class SimpleTesting {
  public static void main(String[] args) {
    Hashtable<Integer, String> hashTable = new Hashtable<>();
    hashTable.put(1, "One");
    hashTable.put(2, "Two");
    hashTable.put(3, "Three");
    System.out.println(hashTable);
  }
}

Resultado:

{3=Three, 2=Two, 1=One}

Crie HashMap em Java

Neste exemplo, estamos criando HashMap em Java. É a maneira mais simples de criar HashMap, e só precisamos importar o HashMap em nosso código. Esta classe está localizada no pacote java.util. Veja o exemplo abaixo.

import java.util.HashMap;

public class SimpleTesting {
  public static void main(String[] args) {
    HashMap<Integer, String> hashTable = new HashMap<>();
    hashTable.put(1, "One");
    hashTable.put(2, "Two");
    hashTable.put(3, "Three");
    System.out.println(hashTable);
  }
}

Resultado:

{3=Three, 2=Two, 1=One}

Armazene nulo em HashMap em Java

O HashMap permite que nulos sejam armazenados, o que significa que podemos armazenar uma chave nula e vários valores nulos no HashMap. Esta classe é útil quando você tem null em suas coleções. Veja o exemplo abaixo.

import java.util.HashMap;

public class SimpleTesting {
  public static void main(String[] args) {
    HashMap<Integer, String> hashTable = new HashMap<>();
    hashTable.put(1, "One");
    hashTable.put(2, "Two");
    hashTable.put(3, "Three");
    hashTable.put(null, "Four");
    hashTable.put(null, null);
    System.out.println(hashTable);
  }
}

Resultado:

{null=null, 1=One, 2=Two, 3=Three}

Armazene nulo em Hashtable em Java

A Hashtable não permite o armazenamento de nulos, o que significa que não podemos armazenar um nulo na Hashtable. Esta classe não é útil quando você tem null em suas coleções. Veja o exemplo abaixo.

Ele lança uma exceção NullPointerException se um valor nulo for armazenado.

import java.util.Hashtable;

public class SimpleTesting {
  public static void main(String[] args) {
    Hashtable<Integer, String> hashTable = new Hashtable<>();
    hashTable.put(1, "One");
    hashTable.put(2, "Two");
    hashTable.put(3, "Three");
    hashTable.put(null, "Four");
    hashTable.put(null, null);
    System.out.println(hashTable);
  }
}

Resultado:

Exception in thread "main" java.lang.NullPointerException