Comparing collections
Below I created two tables comparing the different Java collection types. It is mainly relevant with regards to 1Z0-819.
The first table is about characteristics, the second about implemented interfaces.
| ArrayList | LinkedList | HashSet | TreeSet | HashMap | TreeMap | |
|---|---|---|---|---|---|---|
| resizable | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| duplicates allowed | ✅ | ✅ | ✅ (not keys) |
✅ (not keys) |
||
| access by index | ✅ | ✅ | ||||
| auto-sorted | ✅ | ✅ | ||||
| fixed order | ✅ | ✅ | ||||
| synchronized | ||||||
| null allowed | ✅ | ✅ | ✅ just 1 |
✅ (1 as key, multiple as value) |
✅ (only value, not key) |
|
| excels at | add/remove/ contains | stack operations | add/remove/ contains | find first, last, range queries, closest elements |
get, put, lookup, large collections |
finding first, next, range queries, closest element, large collections, case-insensitive key comparisons |
-
| ArrayList | LinkedList | HashSet | TreeSet | HashMap | TreeMap | |
|---|---|---|---|---|---|---|
| Serializable | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| Clonable | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| Iterable |
✅ | ✅ | ✅ | ✅ | ||
| Collection |
✅ | ✅ | ✅ | ✅ | ||
| List |
✅ | ✅ | ||||
| RandomAccess | ✅ | |||||
| Deque | ✅ | |||||
| Queue | ✅ | |||||
| Set |
✅ | ✅ | ||||
| NavigableSet |
✅ | |||||
| SortedSet |
✅ | |||||
| Map<K,V> | ✅ | ✅ | ||||
| NavigableMap<K,V> | ✅ | |||||
| SortedMap<K,V> | ✅ |