DSAExam Prep & Patterns
Master Cheat Sheet
One-page syntax sheet for quick memorization and comprehensive method reference table
A consolidated syntax and method reference across all primary Java collection structures.
One-Page Syntax Sheet (Memorize)
// --- 1. ARRAY ---
int[] arr = new int[5];
int len = arr.length; // field, NOT method
int val = arr[0];
// --- 2. ARRAYLIST ---
List<Integer> list = new ArrayList<>();
list.add(10); // boolean
list.add(0, 20); // void
list.get(0); // E
list.set(0, 99); // returns previous E
list.remove(0); // removes at index -> returns E
list.remove(Integer.valueOf(99)); // removes value -> returns boolean
list.size(); // int
// --- 3. QUEUE & DEQUE ---
Queue<Integer> q = new ArrayDeque<>();
q.offer(10); // boolean (safe)
q.poll(); // returns E (null if empty)
q.peek(); // returns E (null if empty)
Deque<Integer> stack = new ArrayDeque<>();
stack.push(10); // void (inserts at front)
stack.pop(); // returns E (throws if empty)
stack.peek(); // returns E (null if empty)
// --- 4. PRIORITY QUEUE ---
PriorityQueue<Integer> minHeap = new PriorityQueue<>();
PriorityQueue<Integer> maxHeap = new PriorityQueue<>(Collections.reverseOrder());
minHeap.offer(10); // O(log n)
minHeap.poll(); // O(log n) -> returns minimum
// --- 5. SET ---
Set<Integer> set = new HashSet<>();
set.add(10); // boolean (false if duplicate)
set.contains(10); // boolean
// --- 6. MAP ---
Map<String, Integer> map = new HashMap<>();
map.put("A", 1); // returns previous V
map.get("A"); // returns V (null if missing)
map.getOrDefault("A", 0); // safe read
map.merge("A", 1, Integer::sum); // frequency counting
map.keySet(); // Set<K>
map.values(); // Collection<V>
map.entrySet(); // Set<Map.Entry<K, V>>
// --- 7. TREE BOUNDS ---
TreeSet<Integer> ts = new TreeSet<>();
ts.lower(10); // strictly < 10
ts.floor(10); // <= 10
ts.ceiling(10); // >= 10
ts.higher(10); // strictly > 10
TreeMap<Integer, String> tm = new TreeMap<>();
tm.lowerKey(10); // strictly < 10
tm.floorKey(10); // <= 10
tm.ceilingKey(10); // >= 10
tm.higherKey(10); // strictly > 10Method Cheat Sheet Table
| Class | Method | Input Types | Returns | Complexity | Note |
|---|---|---|---|---|---|
Array | arr.length | — | int | O(1) | Public field |
Array | arr[i] | int | T | O(1) | Indexed access |
ArrayList | add(e) | E | boolean | O(1) amortized | Appends at tail |
ArrayList | add(i, e) | int, E | void | O(n) | Shifts elements right |
ArrayList | get(i) | int | E | O(1) | Random indexed read |
ArrayList | set(i, e) | int, E | E | O(1) | Returns old element |
ArrayList | remove(i) | int | E | O(n) | Removes by index |
ArrayList | remove(o) | Object | boolean | O(n) | Removes by .equals() |
LinkedList | addFirst(e) | E | void | O(1) | Prepends to head |
LinkedList | addLast(e) | E | void | O(1) | Appends to tail |
LinkedList | removeFirst() | — | E | O(1) | Throws if empty |
LinkedList | pollFirst() | — | E | O(1) | Returns null if empty |
ArrayDeque | push(e) | E | void | O(1) | Stack push (head) |
ArrayDeque | pop() | — | E | O(1) | Stack pop (head) |
ArrayDeque | offer(e) | E | boolean | O(1) | Queue enqueue (tail) |
ArrayDeque | poll() | — | E | O(1) | Queue dequeue (head) |
PriorityQueue | offer(e) | E | boolean | O(log n) | Sifts up heap |
PriorityQueue | poll() | — | E | O(log n) | Sifts down replacement root |
PriorityQueue | peek() | — | E | O(1) | Returns root element |
HashSet | add(e) | E | boolean | O(1) average | Returns false on duplicate |
HashSet | contains(o) | Object | boolean | O(1) average | Hash bucket lookup |
TreeSet | ceiling(e) | E | E | O(log n) | Smallest >= e |
TreeSet | floor(e) | E | E | O(log n) | Largest <= e |
HashMap | put(k, v) | K, V | V | O(1) average | Returns previous value |
HashMap | get(k) | Object | V | O(1) average | Returns null if absent |
HashMap | merge(k, v, f) | K, V, BiFunction | V | O(1) average | Frequency counting |
TreeMap | ceilingKey(k) | K | K | O(log n) | Smallest key >= k |
TreeMap | floorKey(k) | K | K | O(log n) | Largest key <= k |
Constructors You Should Recognize Instantly
// 1. ArrayList
List<Integer> a1 = new ArrayList<>();
List<Integer> a2 = new ArrayList<>(50); // Pre-allocates buffer (size is still 0)
List<Integer> a3 = new ArrayList<>(List.of(1, 2, 3)); // Populated mutable copy
// 2. LinkedList
LinkedList<Integer> l1 = new LinkedList<>();
LinkedList<Integer> l2 = new LinkedList<>(List.of(1, 2, 3));
// 3. Set Family
Set<Integer> h1 = new HashSet<>();
Set<Integer> h2 = new HashSet<>(List.of(1, 2, 3));
Set<Integer> lhs = new LinkedHashSet<>(); // Preserves insertion order
NavigableSet<Integer> t1 = new TreeSet<>();
NavigableSet<Integer> t2 = new TreeSet<>(Comparator.reverseOrder()); // Reverse sorted
// 4. Heap / PriorityQueue
PriorityQueue<Integer> pqMin = new PriorityQueue<>(); // Default Min-heap
PriorityQueue<Integer> pqMax = new PriorityQueue<>(Comparator.reverseOrder()); // Max-heap
// 5. Map Family
Map<Integer, String> m1 = new HashMap<>();
Map<Integer, String> m2 = new HashMap<>(Map.of(1, "A", 2, "B"));
NavigableMap<Integer, String> tm1 = new TreeMap<>();
NavigableMap<Integer, String> tm2 = new TreeMap<>(Comparator.reverseOrder());Performance Selection Guide
| Requirement | Preferred Structure | Algorithmic Rationale |
|---|---|---|
| Fixed-size indexed data | Array (T[]) | Zero overhead, direct memory offset, no boxing for primitives |
| General resizable list | ArrayList | Fast O(1) random access and amortized append |
| Frequent end insert/remove | ArrayDeque | Circular buffer, beats LinkedList (no discrete node allocations) |
| LIFO Stack | Deque via ArrayDeque | Eliminates synchronization lock contention of Stack |
| FIFO Queue | Queue via ArrayDeque | Amortized O(1) head/tail operations |
| Priority / Extremes | PriorityQueue | O(log n) insertion/removal of root element |
| Unique, unordered | HashSet | Average O(1) constant time lookup |
| Unique + insertion order | LinkedHashSet | Preserves deterministic insertion order |
| Unique + sorted / nearest | TreeSet | O(log n) floor, ceiling, lower, higher, and range sets |
| Fast key-value lookup | HashMap | Average O(1) constant time reads and writes |
| Key-value + insertion order | LinkedHashMap | Predictable iteration; access-order for LRU caches |
| Sorted keys / ranges | TreeMap | O(log n) navigation and range slices |