Java Collections Framework - Full Guide with Examples
1. List - Ordered, Duplicates Allowed
- ArrayList: dynamic array (fast access, slow insert/remove)
Example:
List<String> list = new ArrayList<>();
[Link]("A");
[Link]("B");
[Link]("A"); // Allowed
- LinkedList: faster insert/remove at head or tail
Example:
LinkedList<Integer> ll = new LinkedList<>();
[Link](10); [Link](5);
- Vector: synchronized ArrayList (used less nowadays)
Vector<String> v = new Vector<>();
2. Set - No Duplicates Allowed
- HashSet: unordered, no duplicates
Set<String> set = new HashSet<>();
[Link]("A"); [Link]("A"); // Only one A stored
- LinkedHashSet: maintains insertion order
Set<String> lhs = new LinkedHashSet<>();
- TreeSet: stores in sorted (natural) order
Set<Integer> ts = new TreeSet<>();
[Link](5); [Link](1); // Sorted: 1, 5
3. Map - Key-Value Pairs
- HashMap: no order, fast, unique keys
Map<Integer, String> map = new HashMap<>();
[Link](1, "A");
[Link](2, "B");
- LinkedHashMap: insertion-order map
Map<Integer, String> lhm = new LinkedHashMap<>();
- TreeMap: keys sorted
Map<Integer, String> tm = new TreeMap<>();
4. Queue - FIFO Structure
- PriorityQueue: orders based on priority
Queue<Integer> pq = new PriorityQueue<>();
[Link](3); [Link](1); // poll() returns 1
5. Deque - Double-Ended Queue
Deque<Integer> dq = new ArrayDeque<>();
[Link](1); [Link](2);
Common Methods:
- [Link](index), [Link](val), [Link](key)
- [Link](), [Link](), [Link]()
Iteration:
- For-each loop: for (String s : list) { }
- Iterator: Iterator<String> it = [Link]();
Thread Safe:
- Vector instead of ArrayList
- ConcurrentHashMap instead of HashMap
Use Case:
- ArrayList: Student roll numbers
- HashSet: Unique usernames
- HashMap: Roll no -> Student name
- TreeMap: Sorted phone directory