Java Collections Framework (JCF) provides powerful data structures that simplify complex programming tasks. In this blog series, we will explore all collection types and their methods in detail, ensuring you skip none!
1. ArrayList (java.util.ArrayList)
Overview
ArrayList is a resizable array implementation of the List interface. It allows random access, dynamic resizing, and provides fast read operations (O(1)) but slower insertions/deletions (O(n)).
Constructors
ArrayList<Integer> list = new ArrayList<>(); // Default
ArrayList<Integer> list2 = new ArrayList<>(20); // With initial capacity
ArrayList<Integer> list3 = new ArrayList<>(list2); // Copying another listCore Methods
Adding Elements
list.add(10); // Appends element at the end
list.add(1, 20); // Inserts 20 at index 1Removing Elements
list.remove(1); // Removes element at index 1
list.remove(Integer.valueOf(10)); // Removes first occurrence of 10
list.clear(); // Removes all elementsRetrieving Elements
int val = list.get(0); // Retrieves the first elementUpdating Elements
list.set(0, 99); // Updates the first element to 99Searching Elements
boolean exists = list.contains(99); // Returns true if 99 exists
int index = list.indexOf(99); // Returns index of first occurrence
int lastIndex = list.lastIndexOf(99); // Returns last occurrenceChecking Size and Emptiness
int size = list.size(); // Returns number of elements
boolean isEmpty = list.isEmpty(); // Checks if emptyIteration
for (Integer num : list) { System.out.println(num); }Conversion
Object[] arr = list.toArray(); // Converts to Object array
Integer[] intArr = list.toArray(new Integer[0]); // Converts to Integer arraySorting
list.sort(Comparator.naturalOrder()); // Sorts in ascending order
2. LinkedList (java.util.LinkedList)
Overview
A LinkedList is a doubly linked list implementation of List and Deque. It allows fast insertions and deletions (O(1)) but slower access (O(n)).
Constructors
LinkedList<String> linkedList = new LinkedList<>();Core Methods
Adding Elements
linkedList.add("Apple"); // Adds at end
linkedList.addFirst("Orange"); // Adds at beginning
linkedList.addLast("Banana"); // Adds at endRemoving Elements
linkedList.remove(); // Removes first element
linkedList.remove(1); // Removes element at index 1
linkedList.removeFirst(); // Removes first element
linkedList.removeLast(); // Removes last elementRetrieving Elements
String first = linkedList.getFirst(); // Gets first element
String last = linkedList.getLast(); // Gets last elementChecking Size and Emptiness
int size = linkedList.size();
boolean isEmpty = linkedList.isEmpty();Iteration
for (String item : linkedList) { System.out.println(item); }Queue Methods (Inherited from Deque)
linkedList.offer("Grapes"); // Adds element at end
String head = linkedList.poll(); // Retrieves and removes first element
String peekElement = linkedList.peek(); // Retrieves first element without removing
3. Queue (java.util.Queue)
Overview
A Queue follows FIFO (First-In-First-Out) principle. It is implemented by LinkedList and PriorityQueue.
Core Methods
Adding and Removing Elements
Queue<Integer> queue = new LinkedList<>();
queue.offer(10); // Adds 10 to the queue
queue.offer(20);Retrieving Elements
int first = queue.poll(); // Retrieves and removes head element
int head = queue.peek(); // Retrieves head without removingChecking Size and Emptiness
int size = queue.size();
boolean isEmpty = queue.isEmpty();
4. Stack (java.util.Stack)
Overview
A Stack follows LIFO (Last-In-First-Out) principle. It extends Vector.
Core Methods
Adding and Removing Elements
Stack<Integer> stack = new Stack<>();
stack.push(10); // Pushes element onto stack
stack.push(20);Retrieving Elements
int top = stack.peek(); // Returns top element without removing
int popped = stack.pop(); // Removes and returns top elementChecking if Empty
boolean isEmpty = stack.empty();Searching Elements
int position = stack.search(10); // Returns 1-based positionConclusion
This concludes Part 1 of our Java Collections deep dive. We covered ArrayList, LinkedList, Queue, and Stack, exploring all their methods with examples. Stay tuned for Part 2, where we will cover Deque, HashSet, and HashMap in detail!
🚀 Next Up: Java Collections Part 2 - Deque, HashSet, and HashMap