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> | ✅ |