Difference Between HashMap and Hashtable
| HashMap | Hashtable |
|---|---|
| HashMap allows to store one entry with null as key | Hashtable doesnot allow null as key |
| HashMap allows to store many entries with null as value in the key-value pair | Hashtable doesnot allow null as value in key-value pair |
| HashMap is not Synchronized and hence not safe in Multithreading | Hashtable is Synchronized safe in Multithreading but only one thread can access at a time |
| HashMap provides higher speed/performance compared to Hashtable | Relatively slow because Hashtable supports multithreading |
| LinkedHashMap and PrinterStateReasons are derived classes of HashMap | Properties and UIDefaults are derived classes of Hashtable |
Example - Java Program using HashMap and HashTable
import java.util.HashMap;
import java.util.Hashtable;
public class HashMapVsHashTable {
public static void main (String args[]) {
System.out.println("------ HashMap -----");
HashMap colourMap
= new HashMap();
colourMap.put(1, "Red");
colourMap.put(2, "Green");
colourMap.put(3, "Blue");
colourMap.put(4, "Yellow");
//will store one entry with key null
colourMap.put(null, null);
System.out.println(colourMap);
//will replace the entry with key null
colourMap.put(null, "new");
System.out.println(colourMap);
colourMap.remove(3);
System.out.println(colourMap);
//For each element, form new string
//by concatenating Flower and
//replace all elements with the new String
colourMap.replaceAll(
(x,y) -> (y + " Ok") );
System.out.println(colourMap);
System.out.println("------ Hashtable -----");
Hashtable fruitTable
= new Hashtable();
fruitTable.put(1, "Apple");
fruitTable.put(2, "Orange");
fruitTable.put(3, "Mango");
fruitTable.put(4, "Grape");
System.out.println(fruitTable);
fruitTable.remove(2);
System.out.println(fruitTable);
//For each element,
//take substring of first 4 characters
//starting from index 0
//and replace all elements with the new String
fruitTable.replaceAll(
(x,y) -> (y.substring(0,4)));
System.out.println(fruitTable);
//will throw a null pointer exception
fruitTable.put(null, null);
}
}
The above program would display the result shown below:
------ HashMap -----
{null=null, 1=Red, 2=Green, 3=Blue, 4=Yellow}
{null=new, 1=Red, 2=Green, 3=Blue, 4=Yellow}
{null=new, 1=Red, 2=Green, 4=Yellow}
{null=new Ok, 1=Red Ok, 2=Green Ok, 4=Yellow Ok}
------ Hashtable -----
{4=Grape, 3=Mango, 2=Orange, 1=Apple}
{4=Grape, 3=Mango, 1=Apple}
{4=Grap, 3=Mang, 1=Appl}
Exception in thread "main"
java.lang.NullPointerException
at java.util.Hashtable.put
(Hashtable.java:460)
at HashMapVsHashTable.main
(HashMapVsHashTable.java:53)
<< Vector vs ArrayList abstract Keyword >>
Krivalar Tutorials 