HashMap vs Dictionary In Java
In Java, HashMap and Dictionary are both data structures used to store key-value pairs. While they share some similarities, they significantly differ in their design, usage, and behavior. This article explores the differences between these two classes, explaining their features with code examples. It’s HashMap vs Dictionary time folks!
1. What is a HashMap?
A HashMap is part of the java.util package and implements the Map interface. It is a modern and widely used collection for mapping keys to values. A HashMap allows null keys and values and is not synchronized by default.
public class HashmapExample {
public static void main(String[] args) {
HashMap<String, Integer> hashMap = new HashMap<>();
// Adding elements
hashMap.put("Shoes", 3);
hashMap.put("Shirts", 5);
hashMap.put("Trousers", 2);
// Retrieving and displaying elements
System.out.println("HashMap: " + hashMap);
System.out.println("Value for 'Shoes': " + hashMap.get("Shoes"));
// Iterating through the HashMap
hashMap.forEach((key, value) -> System.out.println(key + " -> " + value));
}
}
HashMap uses a hash table internally to store entries, making lookups and updates efficient with an average time complexity of O(1). Since it is not synchronized, it is faster than Hashtable and Dictionary in single-threaded scenarios. However, for multi-threaded use, external synchronization is required.
2. What is a Dictionary?
Dictionary is an abstract class in the java.util package. It was the original class used for mapping keys to values in Java, but it is now considered legacy and has been largely replaced by Map-based implementations such as HashMap.
public class DictionaryExample {
public static void main(String[] args) {
Dictionary<String, Integer> dictionary = new Hashtable<>();
dictionary.put("Dog", 1);
dictionary.put("Cat", 2);
dictionary.put("Bird", 3);
System.out.println("Dictionary: " + dictionary);
System.out.println("Value for 'Cat': " + dictionary.get("Cat"));
dictionary.keys().asIterator().forEachRemaining(key
-> System.out.println(key + " -> " + dictionary.get(key))
);
}
}
Dictionary is an abstract class, and Hashtable is its primary concrete implementation. Unlike HashMap, Dictionary does not allow null keys or values. It is thread-safe because it synchronizes methods, but this comes at the cost of performance in multi-threaded environments. Its usage is discouraged in modern Java applications.
3. Key Differences Between HashMap and Dictionary
The HashMap class is a more versatile and efficient replacement for Dictionary. It is designed to handle common use cases in modern applications, whereas Dictionary remains in the Java API for compatibility with older codebases.
| Feature | HashMap | Dictionary |
|---|---|---|
| Package | java.util | java.util |
| Introduced In | Java 2 (JDK 1.2) | Java 1 (JDK 1.0) |
| Inheritance | Implements Map interface | Abstract class |
| Synchronization | Not synchronized | Synchronized |
| Null Handling | Allows null keys and values | Does not allow nulls |
| Performance | Faster in single-threaded scenarios | Slower due to synchronization |
4. When to Use HashMap vs. Dictionary
Use a HashMap for flexible and high-performance key-value pair management, especially in modern applications where synchronization can be managed externally if necessary. On the other hand, avoid using Dictionary in new code as it is primarily maintained for backward compatibility. For synchronized operations, opt for ConcurrentHashMap as a modern and efficient alternative to Dictionary.
Here is a code example demonstrating the use of ConcurrentHashMap instead of Dictionary.
public class ConcurrentHashMapExample {
public static void main(String[] args) {
ConcurrentHashMap<String, Integer> map = new ConcurrentHashMap<>();
map.put("Red", 10);
map.put("Blue", 20);
map.put("Green", 30);
System.out.println("ConcurrentHashMap: " + map);
}
}
5. Conclusion
The HashMap and Dictionary classes serve similar purposes, but HashMap is the preferred choice for modern Java development. It provides better performance, flexibility, and compatibility with the Java Collections Framework. On the other hand, Dictionary is a legacy class with limited features and is rarely used today.
6. Download the Source Code
This was an article on the differences between Java HashMap vs. Dictionary.
You can download the full source code of this example here: java hashmap vs dictionary

