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} 