Mastering Java ArrayList: Operations, Methods, and Best Practices
Java ArrayList Class
Discover the full power of Java’s ArrayList: create, manipulate, and iterate with clear, real‑world examples.
The ArrayList class, part of the Java Collections Framework, implements the List interface and offers a resizable array data structure. Unlike static arrays, an ArrayList automatically adjusts its capacity when elements are added or removed, making it a dynamic array.

ArrayList vs. Array
Traditional arrays require a fixed size at declaration, which limits flexibility. ArrayList overcomes this limitation by resizing on demand, enabling efficient dynamic data handling.
Creating an ArrayList
Import the class before use:
import java.util.ArrayList;
Instantiate with the desired element type:
// Integer type ArrayList
ArrayList<Integer> intList = new ArrayList<>();
// String type ArrayList
ArrayList<String> strList = new ArrayList<>();
Note: Use wrapper classes (e.g., Integer for int) because generics do not support primitive types.
Example: Create an ArrayList
import java.util.ArrayList;
class Main {
public static void main(String[] args){
ArrayList<String> languages = new ArrayList<>();
languages.add("Java");
languages.add("Python");
languages.add("Swift");
System.out.println("ArrayList: " + languages);
}
}
Output
ArrayList: [Java, Python, Swift]
Basic Operations on ArrayList
Core operations include adding, accessing, modifying, and removing elements. Below are concise code snippets for each.
- Add elements
- Access elements
- Change elements
- Remove elements
1. Adding Elements
Append a single element:
ArrayList<String> languages = new ArrayList<>();
languages.add("Java");
languages.add("C");
languages.add("Python");
System.out.println("ArrayList: " + languages);
Output
ArrayList: [Java, C, Python]
Insert at a specific index:
languages.add(1, "JavaScript");
languages.add(3, "C++");
Add all elements from a collection:
import java.util.ArrayList;
import java.util.HashSet;
class Main {
public static void main(String[] args) {
HashSet<String> vowels = new HashSet<>();
vowels.add("a");
vowels.add("e");
vowels.add("i");
ArrayList<String> alphabets = new ArrayList<>();
alphabets.addAll(vowels);
System.out.println("ArrayList: " + alphabets);
}
}
Output
ArrayList: [a, e, i]
2. Accessing Elements
Retrieve by index:
ArrayList<String> animals = new ArrayList<>();
animals.add("Cat");
animals.add("Dog");
animals.add("Cow");
String str = animals.get(1);
System.out.print("Element at index 1: " + str);
Output
Element at index 1: Dog
Iterate with an Iterator if needed.
3. Modifying Elements
Replace an existing element:
ArrayList<String> languages = new ArrayList<>();
languages.add("Java");
languages.add("Kotlin");
languages.add("C++");
languages.set(2, "JavaScript");
System.out.println("Modified ArrayList: " + languages);
Output
Modified ArrayList: [Java, Kotlin, JavaScript]
4. Removing Elements
By index:
ArrayList<String> animals = new ArrayList<>();
animals.add("Dog");
animals.add("Cat");
animals.add("Horse");
String removed = animals.remove(2);
System.out.println("Updated ArrayList: " + animals);
System.out.println("Removed Element: " + removed);
Output
Updated ArrayList: [Dog, Cat] Removed Element: Horse
Clear all elements with clear() or remove a range with removeAll().
Common ArrayList Methods
Beyond basic CRUD operations, the following methods are frequently used:
| Method | Description |
|---|---|
| size() | Returns the number of elements. |
| sort() | Sorts the list. |
| clone() | Creates a shallow copy. |
| contains() | Checks for an element’s presence. |
| ensureCapacity() | Preallocates space. |
| isEmpty() | Checks if the list is empty. |
| indexOf() | Finds the first occurrence index. |
For a complete list, refer to the official ArrayList API.
Iterating with for‑Each
ArrayList<String> animals = new ArrayList<>();
animals.add("Cow");
animals.add("Cat");
animals.add("Dog");
for (String animal : animals) {
System.out.print(animal + ", ");
}
Output
Cow, Cat, Dog,
Frequently Asked Questions
What is the difference between Java ArrayList and LinkedList?
| ArrayList | LinkedList |
|---|---|
Implements List interface | Implements List, Queue, and Deque |
| Single contiguous memory block | Nodes with next/prev references |
| Random access O(1) | Sequential access O(n) |
| Resizes dynamically | Resizes dynamically |
How to convert an ArrayList to an array?
String[] arr = new String[languages.size()];
languages.toArray(arr);
How to convert an array to ArrayList?
ArrayList<String> list = new ArrayList<>(Arrays.asList(arr));
How to create and initialize an ArrayList in one line?
ArrayList<String> list = new ArrayList<>(Arrays.asList("Java", "Python", "C"));
How to convert an ArrayList to a String?
String str = languages.toString();
How to create an ArrayList using the List interface?
List<String> list = new ArrayList<>();
Java
- Understanding Java’s final Keyword: Variables, Methods, and Classes
- Mastering Java Anonymous Inner Classes: Definition, Syntax, and Practical Examples
- Understanding Java Vector: Usage, Features, and Comparison with ArrayList
- Java LinkedList: Comprehensive Guide with Examples
- Mastering Java’s ObjectInputStream: A Comprehensive Guide
- Mastering Java ObjectOutputStream: Serialization, Methods, and Practical Examples
- Mastering Java’s PrintStream Class: Print, Println, and Printf Explained
- Mastering Java Reader Class: Subclasses, Methods, and Practical Example
- Mastering Java Generics – Building Reusable, Type‑Safe Code
- Mastering Java File Operations with java.io – Creation, Reading, Writing & Deletion