HashMap e Hashtable armazenam pares de chave / valor em uma tabela hash. Ao usar um Hashtable ou HashMap, especificamos um objeto que é usado como uma chave e o valor que você deseja vincular a essa chave. A chave é então hash e o código hash resultante é usado como o índice no qual o valor é armazenado na tabela.
Amostra de código Java. 
 

// A sample Java program to demonstrate HashMap and HashTable
import java.util.*;
import java.lang.*;
import java.io.*;
 
/* Name of the class has to be "Main" only if the class is public. */
class Ideone
{
    public static void main(String args[])
    {
        //----------hashtable -------------------------
        Hashtable<Integer,String> ht=new Hashtable<Integer,String>();
        ht.put(101," ajay");
        ht.put(101,"Vijay");
        ht.put(102,"Ravi");
        ht.put(103,"Rahul");
        System.out.println("-------------Hash table--------------");
        for (Map.Entry m:ht.entrySet()) {
            System.out.println(m.getKey()+" "+m.getValue());
        }
 
        //----------------hashmap--------------------------------
        HashMap<Integer,String> hm=new HashMap<Integer,String>();
        hm.put(100,"Amit");
        hm.put(104,"Amit"); 
        hm.put(101,"Vijay");
        hm.put(102,"Rahul");
        System.out.println("-----------Hash map-----------");
        for (Map.Entry m:hm.entrySet()) {
            System.out.println(m.getKey()+" "+m.getValue());
        }
    }
}
Saída
------------- Tabela de hash --------------
103 Rahul
102 Ravi
101 Vijay
----------- Mapa de hash -----------
100 Amit
101 Vijay
102 Rahul
104 Amit

Hashmap vs Hashtable 
1. HashMap não está sincronizado. Não é seguro para threads e não pode ser compartilhado entre muitas threads sem o código de sincronização adequado, enquanto o Hashtable é sincronizado. É thread-safe e pode ser compartilhado com muitos threads. 
2. O HashMap permite uma chave nula e vários valores nulos, enquanto o Hashtable não permite nenhuma chave ou valor nulo. 
3. HashMap geralmente é preferível a HashTable se a sincronização de thread não for necessária
Por que HashTable não permite null e HashMap permite? 
Para armazenar e recuperar objetos de uma HashTable com êxito, os objetos usados ​​como chaves devem implementar o método hashCode e o método equals. Como null não é um objeto, ele não pode implementar esses métodos. HashMap é uma versão avançada e aprimorada da Hashtable. HashMap foi criado posteriormente.
Artigos relacionados: 
 

Fonte: 

https://docs.oracle.com/javase/8/docs/api/java/util/Hashtable.html
Este artigo foi compilado por Aditya Goel . Escreva comentários se encontrar algo incorreto ou se quiser compartilhar mais informações sobre o tópico discutido acima