Collections manage groups of objects Provide far more functionality than basic arrays Distinct characteristics
Deletion insertion dynamic allocation size variability support for polymorphism
List
Stores objects while maintaining index and order allowing duplicates
ArrayList Possesses array characteristics with dynamic resizing Slower in terms of speed due to indexing (e.g., values inserted or deleted in the middle)
LinkedList Provides faster manipulation compared to ArrayList
Using Generics group specific types together List nick = new ArrayList<>();
Common Methods nick.add(“Value”) Adds an object nick.get(index) Accesses by index nick.size() Returns the size nick.set(index, “Value”) Modifies an index nick.contains(“Value”) Checks existence nick.clear() Clears all elements nick.isEmpty() Checks if empty
Collections Utility Class Collections.addAll(list, val1, val2, …) Adds multiple objects at once Collections.frequency(list, val) Counts occurrences Collections.min(list) Collections.max(list) Finds min/max values Collections.sort(list) Sorts the list Collections.shuffle(list) Randomizes order Collections.fill(list, val) Initializes with a value
Set
Implements set theory does not allow duplicates
Hash
An algorithm that generates unpredictable values for a given input Sorting is impossible due to unpredictable nature of generated values Nearly impossible to retrieve the original value from the hash A one-way algorithm Offers fast performance and high security
LinkedList Usage
Stack (LIFO: Last In First Out) push pop peek
Queue (FIFO: First In First Out) offer poll peek