DEV Community

Tamilselvan K
Tamilselvan K

Posted on

Day-91 Map in Java

In Java, the Map interface is one of the most powerful data structures that allows us to store data in key-value pairs. Unlike a List or Set, a Map does not allow duplicate keys, but values can be duplicated.

Key Points About Map

  • A Map stores data in key-value pairs.
  • Keys are unique(no duplicates allowed).
  • Values can be duplicated.
  • Each key maps to exactly one value.
  • Commonly used implementations:

    • HashMap
    • LinkedHashMap
    • TreeMap

Comparison of HashMap, LinkedHashMap, and TreeMap

Feature HashMap LinkedHashMap TreeMap
Order No order Insertion order Sorted order (by keys)
Null Key Allowed (only one) Allowed (only one) Not allowed
Null Values Allowed Allowed Allowed
Speed Fast O(1) Fast O(1) Slower O(log n)

Commonly Used Map Methods

  • put(key, value) → Adds or updates a key-value pair
  • get(key) → Returns the value for a given key
  • remove(key) → Removes a key and its value
  • containsKey(key) → Checks if the map contains a specific key
  • containsValue(value) → Checks if a specific value exists
  • keySet() → Returns a set of all keys
  • values() → Returns a collection of all values
  • entrySet() → Returns a set of key-value pairs (Map.Entry objects)

-

Example : MapDemo

package collectiondemo;

import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.TreeMap;

public class MapDemo {

    public static void main(String[] args) {

        // HashMap: Stores items in key-value pairs (No specific order)
        HashMap<Integer, String> h1 = new HashMap<>();
        h1.put(10, "Tamil");
        h1.put(20, "Selvan");
        h1.put(30, "kts");
        System.out.println("HashMap: " + h1);

        // LinkedHashMap: Maintains insertion order
        LinkedHashMap<Integer, String> h2 = new LinkedHashMap<>();
        h2.put(2, "Selvan");
        h2.put(1, "Tamil");
        h2.put(3, "kts");
        System.out.println("LinkedHashMap: " + h2);

        // TreeMap: Stores keys in sorted order
        TreeMap<Integer, String> h3 = new TreeMap<>();
        h3.put(2, "Selvan");
        h3.put(3, "kts");
        h3.put(1, "Tamil");
        System.out.println("TreeMap: " + h3);

        // Demonstrating methods
        System.out.println("Get key 1: " + h3.get(1)); 

        h3.remove(1);
        System.out.println("After remove(1): " + h3);

        System.out.println("Contains key 1? " + h3.containsKey(1));
        System.out.println("Contains value 'kts'? " + h3.containsValue("kts"));

        System.out.println("Keys: " + h3.keySet());
        System.out.println("Values: " + h3.values());
        System.out.println("Entries: " + h3.entrySet());

        // Iterating through TreeMap
        for (Integer i : h3.keySet()) {
            System.out.println("Key: " + i + " Value: " + h3.get(i));
        }
    }
}
Enter fullscreen mode Exit fullscreen mode

Output

HashMap: {20=Selvan, 10=Tamil, 30=kts}
LinkedHashMap: {2=Selvan, 1=Tamil, 3=kts}
TreeMap: {1=Tamil, 2=Selvan, 3=kts}
Get key 1: Tamil
After remove(1): {2=Selvan, 3=kts}
Contains key 1? false
Contains value 'kts'? true
Keys: [2, 3]
Values: [Selvan, kts]
Entries: [2=Selvan, 3=kts]
Key: 2 Value: Selvan
Key: 3 Value: kts
Enter fullscreen mode Exit fullscreen mode

Conclusion

  • HashMap is best when you just need fast access without caring about order.
  • LinkedHashMap is useful when you want to preserve the insertion order.
  • TreeMap is helpful when you need keys in sorted order.

Top comments (0)