Skip to main content

Command Palette

Search for a command to run...

ArrayList in Java

Author by Manikandan S - 7th october 2026

Updated
•5 min read•View as Markdown
ArrayList in Java
M
Product Engineer with 3.4 years of experience in Java, Spring Boot, React, Vue, SQL, AWS, and Warehouse Management Systems. Passionate about backend development and software engineering.

ArrayList is one of the most commonly used classes in the Java Collections Framework.

It provides a resizable array that can grow or shrink dynamically.


1. What is ArrayList?

Definition:
ArrayList is a resizable-array implementation of the List interface.

It:

  • Maintains insertion order

  • Allows duplicate elements

  • Allows null values

  • Provides index-based access

  • Grows dynamically

Syntax:

ArrayList<Type> list = new ArrayList<>();

Example:

ArrayList<String> names = new ArrayList<>();

names.add("Mani");
names.add("Arun");
names.add("Kumar");

System.out.println(names);

Output:

[Mani, Arun, Kumar]

2. Creating an ArrayList

Syntax:

ArrayList<Integer> numbers = new ArrayList<>();

Example:

ArrayList<Integer> numbers = new ArrayList<>();

numbers.add(10);
numbers.add(20);
numbers.add(30);

3. ArrayList with Initial Capacity

Definition:
We can specify an initial capacity when creating an ArrayList.

Syntax:

ArrayList<Type> list = new ArrayList<>(capacity);

Example:

ArrayList<Integer> numbers = new ArrayList<>(20);

This creates an ArrayList with an initial capacity of 20.

Capacity and size are different. Capacity is the allocated storage; size is the number of elements currently stored.


4. Adding Elements

Definition:
add() adds an element to the end of the list.

Example:

ArrayList<String> names = new ArrayList<>();

names.add("Java");
names.add("Spring");

System.out.println(names);

Output:

[Java, Spring]

5. Adding Element at an Index

Definition:
add(index, element) inserts an element at a specific position.

Example:

ArrayList<String> names = new ArrayList<>();

names.add("Java");
names.add("Spring");

names.add(1, "Python");

System.out.println(names);

Output:

[Java, Python, Spring]

6. Accessing Elements

Definition:
get(index) returns the element at a specific index.

Example:

ArrayList<String> names = new ArrayList<>();

names.add("Java");
names.add("Spring");

System.out.println(names.get(0));

Output:

Java

7. Updating Elements

Definition:
set(index, element) replaces an existing element.

Example:

ArrayList<String> names = new ArrayList<>();

names.add("Java");
names.add("Spring");

names.set(1, "React");

System.out.println(names);

Output:

[Java, React]

8. Removing Elements

Definition:
remove() removes an element by index or object.

Example:

ArrayList<String> names = new ArrayList<>();

names.add("Java");
names.add("Spring");

names.remove(0);

System.out.println(names);

Output:

[Spring]

9. Removing by Object

Example:

names.remove("Spring");

This removes the first matching element.


10. Finding the Size

Definition:
size() returns the number of elements currently stored.

Example:

ArrayList<String> names = new ArrayList<>();

names.add("Java");
names.add("Spring");

System.out.println(names.size());

Output:

2

11. Checking an Element

Definition:
contains() checks whether an element exists.

Example:

ArrayList<String> names = new ArrayList<>();

names.add("Java");

System.out.println(names.contains("Java"));

Output:

true

12. Finding Index

Definition:
indexOf() returns the first index of an element.

Example:

ArrayList<String> names =
        new ArrayList<>(Arrays.asList("Java", "Spring", "Java"));

System.out.println(names.indexOf("Java"));

Output:

0

13. Last Index

Definition:
lastIndexOf() returns the last index of an element.

Example:

System.out.println(names.lastIndexOf("Java"));

Output:

2

14. Checking Empty ArrayList

Definition:
isEmpty() checks whether the list contains no elements.

Example:

ArrayList<String> names = new ArrayList<>();

System.out.println(names.isEmpty());

Output:

true

15. Clearing ArrayList

Definition:
clear() removes all elements.

Example:

names.clear();

System.out.println(names);

Output:

[]

16. Iterating Using for Loop

Example:

ArrayList<String> names =
        new ArrayList<>(Arrays.asList("Java", "Spring", "React"));

for (int i = 0; i < names.size(); i++) {
    System.out.println(names.get(i));
}

17. Iterating Using Enhanced for Loop

Example:

for (String name : names) {
    System.out.println(name);
}

18. Iterating Using forEach

Example:

names.forEach(name -> System.out.println(name));

19. Sorting ArrayList

Definition:
An ArrayList can be sorted using Collections.sort() or sort().

Example:

ArrayList<Integer> numbers =
        new ArrayList<>(Arrays.asList(30, 10, 20));

Collections.sort(numbers);

System.out.println(numbers);

Output:

[10, 20, 30]

20. Reverse Sorting

Example:

numbers.sort(Comparator.reverseOrder());

System.out.println(numbers);

Output:

[30, 20, 10]

21. ArrayList with Duplicates

Definition:
ArrayList allows duplicate elements.

Example:

ArrayList<String> names = new ArrayList<>();

names.add("Java");
names.add("Java");

System.out.println(names);

Output:

[Java, Java]

22. ArrayList with null

Definition:
ArrayList allows null elements.

Example:

ArrayList<String> names = new ArrayList<>();

names.add("Java");
names.add(null);

System.out.println(names);

Output:

[Java, null]

23. Converting ArrayList to Array

Definition:
toArray() converts the list into an array.

Example:

ArrayList<String> names =
        new ArrayList<>(Arrays.asList("Java", "Spring"));

String[] array = names.toArray(new String[0]);

24. Copying an ArrayList

Example:

ArrayList<String> original =
        new ArrayList<>(Arrays.asList("Java", "Spring"));

ArrayList<String> copy =
        new ArrayList<>(original);

25. ArrayList vs Array

Feature ArrayList Array
Size Dynamic Fixed
Stores objects Yes Yes, including primitives
Add/remove Supported Not directly
Index access Yes Yes
Collection methods Yes No

26. ArrayList Time Complexity

Operation Average Time
get() O(1)
set() O(1)
add() at end O(1) amortized
add(index, element) O(n)
remove(index) O(n)
contains() O(n)
indexOf() O(n)

27. Important ArrayList Methods

add()
add(index, element)
get()
set()
remove()
size()
contains()
indexOf()
lastIndexOf()
isEmpty()
clear()
sort()
forEach()
toArray()

Complete Example

import java.util.*;

public class Main {
    public static void main(String[] args) {

        ArrayList<String> languages = new ArrayList<>();

        languages.add("Java");
        languages.add("Python");
        languages.add("Java");

        System.out.println(languages);

        System.out.println(languages.get(0));

        languages.set(1, "Spring");

        languages.remove("Java");

        System.out.println(languages);
        System.out.println(languages.size());
    }
}

Output:

[Java, Python, Java]
Java
[Python, Java]
2

Conclusion

ArrayList is a commonly used Java collection when we need a dynamic, ordered list with index-based access.

The important points to remember are:

ArrayList
→ Dynamic size
→ Maintains insertion order
→ Allows duplicates
→ Allows null
→ Fast index-based access
→ Slower insertion/removal in the middle

It is one of the most important Java Collections to understand for Java development, Spring Boot, DSA, and interviews.