Lesson 20 of 25

HashMap & HashSet

HashMap

HashMap stores key-value pairs with O(1) average time for get and put operations. Keys must be unique.

Example
import java.util.HashMap;
import java.util.Map;

Map<String, Integer> wordCount = new HashMap<>();
wordCount.put("hello", 5);
wordCount.put("world", 3);
wordCount.put("java", 10);

wordCount.get("hello");              // 5
wordCount.getOrDefault("python", 0); // 0
wordCount.containsKey("java");       // true
wordCount.size();                     // 3
wordCount.remove("world");

// Iterate over entries
for (Map.Entry<String, Integer> entry : wordCount.entrySet()) {
    System.out.println(entry.getKey() + ": " + entry.getValue());
}

// Iterate keys or values
for (String key : wordCount.keySet()) { /* ... */ }
for (int value : wordCount.values()) { /* ... */ }

HashSet

HashSet stores unique elements with no guaranteed order. It's backed by a HashMap internally.

Example
import java.util.HashSet;
import java.util.Set;

Set<String> tags = new HashSet<>();
tags.add("java");
tags.add("programming");
tags.add("java"); // ignored — already exists

tags.contains("java"); // true
tags.size();           // 2
tags.remove("java");

// Set operations
Set<Integer> a = new HashSet<>(Set.of(1, 2, 3, 4));
Set<Integer> b = new HashSet<>(Set.of(3, 4, 5, 6));

// Union
Set<Integer> union = new HashSet<>(a);
union.addAll(b);       // {1, 2, 3, 4, 5, 6}

// Intersection
Set<Integer> inter = new HashSet<>(a);
inter.retainAll(b);    // {3, 4}

// Difference
Set<Integer> diff = new HashSet<>(a);
diff.removeAll(b);     // {1, 2}