HashMap and Hashtable store key and value pairs in a hash table. When using a Hashtable or HashMap, we specify an object that is used as a key and the value that you want to be linked to that key. The key is then hashed, and the resulting hash code is used as the index at which the value is stored within the table. Now let us discuss with the help of an example.
Hashmap vs Hashtable
- HashMap is non-synchronized. It is not thread-safe and can’t be shared between many threads without proper synchronization code whereas Hashtable is synchronized. It is thread-safe and can be shared with many threads.
- HashMap allows one null key and multiple null values whereas Hashtable doesn’t allow any null key or value.
- HashMap is generally preferred over HashTable if thread synchronization is not needed.
Difference Between Hashmap and Hashtable
S. No. | Hashmap | Hashtable |
---|---|---|
1. | No method is synchronized. | Every method is synchronized. |
2. | Multiple threads can operate simultaneously and hence hashmap’s object is not thread-safe. | At a time only one thread is allowed to operate the Hashtable’s object. Hence it is thread-safe. |
3. | Threads are not required to wait and hence relatively performance is high. | It increases the waiting time of the thread and hence performance is low. |
4. | Null is allowed for both key and value. | Null is not allowed for both key and value. Otherwise, we will get a null pointer exception. |
5. | It is introduced in the 1.2 version. | It is introduced in the 1.0 version. |
6. | It is non-legacy. | It is a legacy. |
Now you must be wondering why HashTable doesn’t allow null and HashMap do?
The answer is simple. In order to successfully store and retrieve objects from a HashTable, the objects used as keys must implement the hashCode method and the equals method. Since null is not an object, it can’t implement these methods. HashMap is an advanced version and improvement on the Hashtable. HashMap was created later.
Example:
Java
// 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()); } } } |
-------------Hash table-------------- 103 Rahul 102 Ravi 101 Vijay -----------Hash map----------- 100 Amit 101 Vijay 102 Rahul 104 Amit
This article is compiled by Aditya Goel. Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above.