Why it matters
Wrong collection choice is the top Java performance mistake. Using LinkedList when ArrayList is faster, using HashMap without knowing about hash quality — these small mistakes multiply in hot code.
The architecture
List: ordered sequence. ArrayList (array-backed, O(1) random access) is the go-to. LinkedList (doubly-linked, O(1) prepend) rarely justified in practice.
Set: unordered unique collection. HashSet (hash-backed, O(1) lookup) is standard. TreeSet gives ordered iteration at O(log n).
Map: key-value store. HashMap for lookup, LinkedHashMap for insertion order, TreeMap for sorted keys.
How it works end to end
Immutability options: List.of(), Set.of(), Map.of() (Java 9+) create truly immutable collections. Collections.unmodifiableList() wraps but doesn't deeply-immutable.
Concurrent variants: ConcurrentHashMap, CopyOnWriteArrayList. Use in multi-threaded code instead of external synchronization.
Legacy: Vector, Hashtable, Stack are older synchronized versions. Avoid; use modern equivalents.