Map and Deque
Map
A Map stores key-value pairs. Keys are unique; values may repeat.
Common Implementations
| Class |
Key order |
Null key |
Null values |
Performance |
HashMap |
None |
One allowed |
Yes |
O(1) avg |
LinkedHashMap |
Insertion order |
One allowed |
Yes |
O(1) avg |
TreeMap |
Natural / Comparator |
No |
Yes |
O(log n) |
Creating Maps
java
Map<String, Integer> scores = new HashMap<>();
scores.put("Alice", 90);
scores.put("Bob", 85);
Map<String, Integer> fixed = Map.of("Alice", 90, "Bob", 85);
Map<String, Integer> big = Map.ofEntries(
Map.entry("Alice", 90),
Map.entry("Bob", 85)
);
Key Map Methods
java
Map<String, Integer> map = new HashMap<>(Map.of("A", 1, "B", 2, "C", 3));
map.get("A");
map.getOrDefault("Z", 0);
map.put("D", 4);
map.putIfAbsent("A", 99);
map.remove("B");
map.containsKey("C");
map.containsValue(3);
map.size();
for (Map.Entry<String, Integer> entry : map.entrySet()) {
System.out.println(entry.getKey() + "=" + entry.getValue());
}
map.merge("A", 10, Integer::sum);
map.computeIfAbsent("E", k -> k.length());
map.replaceAll((k, v) -> v * 2);
Deque
A Deque (double-ended queue) supports insertion and removal at both ends. It is also used as a stack.
Common Implementations
| Class |
Notes |
ArrayDeque |
Resizable array; no null; preferred stack/queue |
LinkedList |
Also implements List; allows null |
Creating a Deque
java
Deque<String> deque = new ArrayDeque<>();
Deque as a Queue (FIFO)
java
deque.offer("first");
deque.offer("second");
deque.offer("third");
deque.peek();
deque.poll();
Deque as a Stack (LIFO)
java
deque.push("a");
deque.push("b");
deque.push("c");
deque.peek();
deque.pop();
Deque Method Reference
| Operation |
Throws on failure |
Returns null/false |
| Add head |
addFirst(e) |
offerFirst(e) |
| Add tail |
addLast(e) / add(e) |
offerLast(e) / offer(e) |
| View head |
getFirst() / element() |
peekFirst() / peek() |
| View tail |
getLast() |
peekLast() |
| Remove head |
removeFirst() / remove() |
pollFirst() / poll() |
| Remove tail |
removeLast() |
pollLast() |
| Stack push |
push(e) = addFirst(e) |
— |
| Stack pop |
pop() = removeFirst() |
— |
Map.of() Restrictions
| Restriction |
Detail |
| Unmodifiable |
Mutations throw UnsupportedOperationException |
No null keys or values |
Throws NullPointerException |
| Duplicate keys |
Throws IllegalArgumentException at creation |
| Max 10 pairs |
Use Map.ofEntries() for more |
Choosing Map vs Deque
Use Map when |
Use Deque when |
| Key-value lookup |
Queue or stack behaviour |
Fast containsKey |
FIFO processing (use offer/poll) |
| Aggregating by key |
LIFO processing (use push/pop) |