Map in Java: HashMap, LinkedHashMap, TreeMap


Introduction

In Java, the Map interface is part of the java.util package. It represents a collection of key-value pairs, where each key is unique. Common implementations of the Map interface include:

  • HashMap
  • LinkedHashMap
  • TreeMap

1. HashMap

A HashMap is an unordered collection that uses a hash table for storage. It does not guarantee the order of keys or values.

Example: Using HashMap

    import java.util.HashMap;
    
    public class HashMapExample {
        public static void main(String[] args) {
            // Create a HashMap
            HashMap map = new HashMap<>();
    
            // Add key-value pairs to the HashMap
            map.put(1, "Apple");
            map.put(2, "Banana");
            map.put(3, "Cherry");
    
            // Display the HashMap
            System.out.println("HashMap: " + map);
    
            // Access a value by key
            System.out.println("Value for key 2: " + map.get(2));
    
            // Remove a key-value pair
            map.remove(2);
            System.out.println("After removal: " + map);
    
            // Iterate over the HashMap
            System.out.println("Iterating through HashMap:");
            for (Integer key : map.keySet()) {
                System.out.println("Key: " + key + ", Value: " + map.get(key));
            }
        }
    }
        

2. LinkedHashMap

A LinkedHashMap is an ordered version of HashMap that maintains a linked list of the entries in the order they were inserted.

Example: Using LinkedHashMap

    import java.util.LinkedHashMap;
    
    public class LinkedHashMapExample {
        public static void main(String[] args) {
            // Create a LinkedHashMap
            LinkedHashMap map = new LinkedHashMap<>();
    
            // Add key-value pairs to the LinkedHashMap
            map.put(1, "Dog");
            map.put(2, "Cat");
            map.put(3, "Rabbit");
    
            // Display the LinkedHashMap
            System.out.println("LinkedHashMap: " + map);
    
            // Add a duplicate key with a new value
            map.put(2, "Horse");
            System.out.println("After updating key 2: " + map);
    
            // Iterate over the LinkedHashMap
            System.out.println("Iterating through LinkedHashMap:");
            for (Integer key : map.keySet()) {
                System.out.println("Key: " + key + ", Value: " + map.get(key));
            }
        }
    }
        

3. TreeMap

A TreeMap is a NavigableMap implementation that uses a red-black tree for storage. It maintains keys in their natural order or a specified comparator's order.

Example: Using TreeMap

    import java.util.TreeMap;
    
    public class TreeMapExample {
        public static void main(String[] args) {
            // Create a TreeMap
            TreeMap map = new TreeMap<>();
    
            // Add key-value pairs to the TreeMap
            map.put(3, "Orange");
            map.put(1, "Apple");
            map.put(2, "Banana");
    
            // Display the TreeMap
            System.out.println("TreeMap: " + map);
    
            // Access a value by key
            System.out.println("Value for key 1: " + map.get(1));
    
            // Iterate over the TreeMap
            System.out.println("Iterating through TreeMap:");
            for (Integer key : map.keySet()) {
                System.out.println("Key: " + key + ", Value: " + map.get(key));
            }
        }
    }
        

Differences Between HashMap, LinkedHashMap, and TreeMap

Feature HashMap LinkedHashMap TreeMap
Ordering No order Maintains insertion order Sorted order
Performance Fast (O(1) for get, put) Fast (O(1) for get, put) Slower (O(log n) for get, put)
Null Keys/Values Allows one null key and multiple null values Allows one null key and multiple null values Does not allow null keys but allows null values

Conclusion

Each Map implementation has its own use case:

  • HashMap: Use for fast, unordered key-value mapping.
  • LinkedHashMap: Use when you need to maintain insertion order.
  • TreeMap: Use when you need sorted keys.




Advertisement