Collections Utility Class
This document explains:
- What Collections class is
- Why it exists
- Sorting utilities
- Searching utilities
- Reversal & shuffling
- Synchronized wrappers
- Unmodifiable wrappers
- Min/Max operations
- Frequency & disjoint
- Interview traps
- Automation relevance
- Code examples
1️⃣ What is Collections Class?
Collections is a utility class present in:
java.util.Collections
Important:
• It contains static utility methods
• Works on Collection objects
• Cannot be instantiated (private constructor)
2️⃣ Sorting
sort(List)
List<Integer> list = Arrays.asList(3, 1, 2);
Collections.sort(list);
System.out.println(list); // [1, 2, 3]
Uses:
• Comparable (natural ordering)
• Or Comparator if provided
sort with Comparator
Collections.sort(list, Comparator.reverseOrder());
3️⃣ Binary Search
Collections.sort(list);
int index = Collections.binarySearch(list, 2);
Important:
• List must be sorted
• Time complexity: O(log n)
4️⃣ Reverse
Collections.reverse(list);
Reverses list in-place.
5️⃣ Shuffle
Collections.shuffle(list);
Randomly permutes list.
Useful in test data randomization.
6️⃣ Min & Max
int min = Collections.min(list);
int max = Collections.max(list);
Works using Comparable or Comparator.
7️⃣ Frequency
int count = Collections.frequency(list, 2);
Counts occurrences.
Time complexity: O(n)
8️⃣ Disjoint
boolean result =
Collections.disjoint(list1, list2);
Returns true if no common elements.
9️⃣ Copy
List<Integer> dest = new ArrayList<>(Arrays.asList(0,0,0));
Collections.copy(dest, list);
Important:
Destination must be at least same size.
🔟 Fill
Collections.fill(list, 5);
Replaces all elements.
1️⃣1️⃣ Unmodifiable Collections
List<Integer> unmod =
Collections.unmodifiableList(list);
• Prevents modification
• Throws UnsupportedOperationException
Used for read-only views.
1️⃣2️⃣ Synchronized Collections
List<Integer> syncList =
Collections.synchronizedList(new ArrayList<>());
Wraps collection with synchronization.
Important:
Iteration must be manually synchronized:
synchronized(syncList) {
for(Integer i : syncList) {
System.out.println(i);
}
}
1️⃣3️⃣ Empty & Singleton Collections
List<String> empty = Collections.emptyList();
Set<String> single = Collections.singleton("A");
Immutable collections.
1️⃣4️⃣ Rotate
Collections.rotate(list, 2);
Rotates elements by given distance.
1️⃣5️⃣ Swap
Collections.swap(list, 0, 1);
Swaps two elements.
1️⃣6️⃣ Time Complexity Overview
Method Complexity
sort O(n log n) binarySearch O(log n) reverse O(n) shuffle O(n) frequency O(n)
1️⃣7️⃣ Interview Questions
Q: Difference between Collection and Collections? A: Collection is interface; Collections is utility class.
Q: Is unmodifiableList immutable? A: It is a read-only view, not deeply immutable.
Q: Does synchronizedList make iteration thread-safe? A: No, manual synchronization required.
Q: What happens if list not sorted before binarySearch? A: Undefined behavior.
1️⃣8️⃣ Automation Framework Relevance
Useful for:
• Sorting API responses before assertion
• Randomizing test inputs
• Frequency validation
• Checking overlap between datasets
• Creating immutable config collections
Example:
List<String> roles = Arrays.asList("USER", "ADMIN");
Collections.sort(roles);
Final Mastery Checklist
You must understand:
✓ Sorting & searching utilities
✓ Unmodifiable vs immutable
✓ Synchronized wrappers
✓ Binary search requirement
✓ Common pitfalls
✓ Automation use cases
✓ Interview clarity