Diferença entre hashtable e hashmap em Java

Mohammad Irfan 12 outubro 2023
  1. Hashtable vs HashMap
  2. Crie Hashtable em Java
  3. Crie HashMap em Java
  4. Armazene nulo em HashMap em Java
  5. Armazene nulo em Hashtable em Java
Diferença 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

Artigo relacionado - Java Hashtable

Artigo relacionado - Java HashMap