Java Collection Framework – Complete Guide
1. Introduction to Collection Framework
The Java Collection Framework (JCF) is a unified architecture used to store, manipulate, and process
groups of objects.
It provides:
• Interfaces → Abstract data structures
• Implementations → Ready-made classes
• Algorithms → Searching, sorting, manipulation methods
• Utilities → Iterators, comparators, synchronization wrappers, etc.
The Collection Framework was introduced in Java 1.2.
2. Advantages of Collection Framework
Main Benefits
1. Reduces Programming Effort
You don't need to implement data structures manually.
2. Increases Performance
Optimized implementations are already provided by Java.
3. Interoperability
Different collection implementations work together through common interfaces.
4. Reusability
Same algorithms can be used on multiple collection types.
5. Type Safety
Generics provide compile-time type checking.
Example:
1
List<String> names = new ArrayList<>();
3. Core Parts of Collection Framework
The framework contains:
1. Interfaces
2. Classes
3. Algorithms
4. Iterators
4. Iterable Interface (Root Interface)
The super-most interface related to collections is:
[Link]
All collection classes become iterable because:
Collection extends Iterable
Methods of Iterable
Iterator<T> iterator();
Returns an iterator.
default void forEach(Consumer action)
Loops through elements.
default Spliterator<T> spliterator()
Used for parallel processing.
2
5. Collection Interface
public interface Collection<E>
It extends Iterable.
It is the root interface of all collection types except Map.
Important Methods of Collection
Adding
add(E e)
addAll(Collection c)
Removing
remove(Object o)
removeAll(Collection c)
clear()
Checking
contains(Object o)
containsAll(Collection c)
isEmpty()
Information
size()
Conversion
toArray()
3
Iteration
iterator()
6. List Interface
List extends Collection
A List is:
• Ordered
• Index-based
• Allows duplicates
• Allows null values (depends on implementation)
7. ArrayList
ArrayList implements List
Internal Structure
Resizable Dynamic Array.
Features
• Fast random access
• Maintains insertion order
• Allows duplicates
• Allows null values
• Not synchronized
4
Performance
Operation Complexity
get() O(1)
add() at end O(1) amortized
insert middle O(n)
remove middle O(n)
Example
List<String> list = new ArrayList<>();
[Link]("A");
[Link]("B");
8. LinkedList
LinkedList implements List, Deque
Internal Structure
Doubly Linked List.
Features
• Fast insertion/deletion
• Slow random access
• Maintains insertion order
• Allows duplicates
• Allows null
5
Performance
Operation Complexity
get(index) O(n)
add/remove first O(1)
add/remove middle O(1) after traversal
Example
LinkedList<Integer> list = new LinkedList<>();
[Link](10);
[Link](5);
9. Vector (Legacy Class)
Vector implements List
Features
• Synchronized
• Thread-safe
• Slower than ArrayList
• Legacy class
Example
Vector<Integer> v = new Vector<>();
10. Stack (Legacy Class)
Stack extends Vector
6
Implements LIFO.
Methods
push()
pop()
peek()
empty()
Example
Stack<Integer> stack = new Stack<>();
[Link](10);
11. Set Interface
Set extends Collection
Features
• No duplicates
• No indexing
12. HashSet
HashSet implements Set
Internal Structure
Hash Table.
7
Features
• No duplicates
• Unordered
• Allows one null value
• Fast operations
Performance
Operation Complexity
add() O(1)
remove() O(1)
contains() O(1)
Example
Set<Integer> set = new HashSet<>();
13. LinkedHashSet
LinkedHashSet extends HashSet
Features
• Maintains insertion order
• No duplicates
• Slightly slower than HashSet
Example
Set<String> set = new LinkedHashSet<>();
8
14. SortedSet Interface
SortedSet extends Set
Elements remain sorted.
Important Methods
first()
last()
headSet()
tailSet()
subSet()
15. NavigableSet Interface
NavigableSet extends SortedSet
Provides navigation methods.
Methods
lower()
floor()
ceiling()
higher()
16. TreeSet
TreeSet implements NavigableSet
9
Internal Structure
Red-Black Tree.
Features
• Sorted data
• No duplicates
• Does not allow null
• Slower than HashSet
Performance
Operation Complexity
add() O(log n)
remove() O(log n)
contains() O(log n)
Example
TreeSet<Integer> ts = new TreeSet<>();
17. EnumSet
Special Set for enum types.
Features
• Very fast
• Uses bit vectors internally
• Only for enums
10
Example
EnumSet<Day> days = [Link]([Link]);
18. Queue Interface
Queue extends Collection
Used for processing elements before handling.
Typically FIFO.
Important Methods
Insert
add()
offer()
Remove
remove()
poll()
Examine
element()
peek()
19. PriorityQueue
PriorityQueue implements Queue
11
Internal Structure
Binary Heap.
Features
• Elements sorted by priority
• Natural ordering or comparator
• No null values
Example
PriorityQueue<Integer> pq = new PriorityQueue<>();
20. Deque Interface
Deque extends Queue
Double-ended queue.
Insertion/removal possible from both sides.
Important Methods
addFirst()
addLast()
removeFirst()
removeLast()
peekFirst()
peekLast()
12
21. ArrayDeque
ArrayDeque implements Deque
Features
• Faster than Stack
• Faster than LinkedList for queue operations
• No null values
Example
Deque<Integer> dq = new ArrayDeque<>();
22. Map Interface
Map<K,V>
Map is NOT part of Collection hierarchy.
Stores key-value pairs.
Keys are unique.
Important Methods
put()
get()
remove()
containsKey()
containsValue()
keySet()
values()
entrySet()
13
23. HashMap
HashMap implements Map
Internal Structure
Hash Table.
Features
• Fast
• Allows one null key
• Allows multiple null values
• Unordered
• Not synchronized
Performance
Operation Complexity
put() O(1)
get() O(1)
remove() O(1)
Example
Map<Integer,String> map = new HashMap<>();
24. LinkedHashMap
LinkedHashMap extends HashMap
14
Features
• Maintains insertion order
• Slightly slower than HashMap
Example
Map<Integer,String> map = new LinkedHashMap<>();
25. Hashtable (Legacy)
Hashtable implements Map
Features
• Thread-safe
• Synchronized
• No null key/value
• Legacy class
Example
Hashtable<Integer,String> ht = new Hashtable<>();
26. SortedMap Interface
SortedMap extends Map
Keys remain sorted.
15
Methods
firstKey()
lastKey()
headMap()
tailMap()
subMap()
27. NavigableMap Interface
NavigableMap extends SortedMap
Adds navigation methods.
Methods
lowerKey()
floorKey()
ceilingKey()
higherKey()
28. TreeMap
TreeMap implements NavigableMap
Internal Structure
Red-Black Tree.
Features
• Sorted by keys
• No null keys
• O(log n) operations
16
Example
TreeMap<Integer,String> tm = new TreeMap<>();
29. WeakHashMap
Keys use weak references.
Unused keys can be garbage collected.
Example
WeakHashMap<Integer,String> wm = new WeakHashMap<>();
30. IdentityHashMap
Uses:
==
Instead of:
equals()
for key comparison.
31. EnumMap
Special Map for enum keys.
Very fast.
17
Example
EnumMap<Day,String> em = new EnumMap<>([Link]);
32. ConcurrentHashMap
Thread-safe modern HashMap.
Better than Hashtable.
Features
• High concurrency
• Fast thread-safe operations
• No null keys/values
Example
ConcurrentHashMap<Integer,String> chm = new ConcurrentHashMap<>();
33. Iterator Interface
Used for traversing collections.
Methods
hasNext()
next()
remove()
18
Example
Iterator<Integer> it = [Link]();
34. ListIterator
Special iterator for List.
Can move both forward and backward.
Methods
hasPrevious()
previous()
add()
set()
35. Spliterator
Introduced in Java 8.
Used for parallel processing.
Methods
tryAdvance()
trySplit()
forEachRemaining()
36. Comparable Interface
Used for natural sorting.
19
Method
compareTo()
Example
class Student implements Comparable<Student>
37. Comparator Interface
Used for custom sorting.
Method
compare()
Example
Comparator<Student> c = (a,b) -> [Link] - [Link];
38. Collections Utility Class
[Link]
Provides utility methods.
20
Sorting
[Link](list)
Searching
[Link](list, key)
Reordering
[Link](list)
[Link](list)
Min/Max
[Link](list)
[Link](list)
Synchronization Wrappers
[Link](list)
Unmodifiable Collections
[Link](list)
21
39. Arrays Utility Class
[Link]
Useful methods:
[Link]()
[Link]()
[Link]()
40. Collection Framework Hierarchy Tree
[Link]
│
└── [Link]
│
├── List
│ ├── ArrayList
│ ├── LinkedList
│ ├── Vector
│ │ └── Stack
│ └── CopyOnWriteArrayList
│
├── Set
│ ├── HashSet
│ │ └── LinkedHashSet
│ │
│ ├── SortedSet
│ │ └── NavigableSet
│ │ └── TreeSet
│ │
│ ├── EnumSet
│ └── CopyOnWriteArraySet
│
└── Queue
├── PriorityQueue
│
├── Deque
│ ├── ArrayDeque
│ └── LinkedList
22
│
└── BlockingQueue
├── ArrayBlockingQueue
├── LinkedBlockingQueue
└── PriorityBlockingQueue
[Link]
│
├── HashMap
│ └── LinkedHashMap
│
├── Hashtable
│
├── SortedMap
│ └── NavigableMap
│ └── TreeMap
│
├── WeakHashMap
├── IdentityHashMap
├── EnumMap
└── ConcurrentHashMap
41. Best Practices
Prefer Modern Classes
Avoid Prefer
Vector ArrayList
Stack ArrayDeque
Hashtable ConcurrentHashMap
Choose Correct Collection
Requirement Best Choice
Fast random access ArrayList
Frequent insert/delete LinkedList
23
Requirement Best Choice
Unique elements HashSet
Sorted elements TreeSet
Key-value pairs HashMap
Sorted keys TreeMap
Thread-safe map ConcurrentHashMap
Queue operations ArrayDeque
42. Final Summary
List
• Ordered
• Duplicates allowed
• Index-based
Set
• Unique elements
• No duplicates
Queue
• FIFO processing
Deque
• Double-ended queue
Map
• Key-value storage
Most Used Classes
• ArrayList
• HashSet
• HashMap
• LinkedHashMap
• TreeMap
24
• TreeSet
• ArrayDeque
• ConcurrentHashMap
43. Conclusion
The Java Collection Framework is one of the most important topics in Java.
Understanding:
• Interfaces
• Implementations
• Internal working
• Performance
• Hierarchy
• Sorting
• Iterators
• Thread safety
is essential for:
• Interviews
• Competitive programming
• Backend development
• Enterprise Java applications
• Spring Boot applications
• System design
Mastering collections makes writing efficient and scalable Java programs much easier.
25