ArrayList Size in Java


We can get the size of an ArrayList using the .size() method:

List<Integer> ourArray = new ArrayList<>(List.of(50, 40, 30));

// Printing the size:
System.out.println(ourArray.size()); // Output: 3

// Changing the ArrayList:
ourArray.remove(2);

// Printing the new size:
System.out.println(ourArray.size()); // Output: 2

Using the size

We can use the size to access items from the end of an ArrayList.

Because ArrayLists are 0-indexed, the index of the last item is size - 1:

List<Integer> ourArray = new ArrayList<>(List.of(50, 40, 30));

int size = ourArray.size();

// Printing the last item:
System.out.println(ourArray.get(size - 1)); // Output: 30

// Printing the second to last item:
System.out.println(ourArray.get(size - 2)); // Output: 40

Assignment
Follow the Coding Tutorial and let's play with some arrays.


Hint
Look at the examples above if you get stuck.


Introduction

In this lesson, we will explore how to determine the size of an ArrayList in Java using the .size() method. Understanding how to work with the size of an ArrayList is crucial for various programming tasks, such as iterating through elements, adding or removing items, and accessing elements from the end of the list. This concept is particularly useful in scenarios where dynamic data structures are required, such as managing a list of user inputs or processing a collection of items.

Understanding the Basics

An ArrayList in Java is a resizable array, which means it can grow and shrink in size dynamically. The .size() method returns the number of elements currently stored in the ArrayList. This is different from the array's length property, which is fixed once the array is created. Let's look at a simple example to illustrate this:

List<String> fruits = new ArrayList<>(List.of("Apple", "Banana", "Cherry"));
System.out.println(fruits.size()); // Output: 3

In this example, the ArrayList fruits contains three elements, so the .size() method returns 3.

Main Concepts

The key concept here is understanding how to use the .size() method to manage and manipulate the elements of an ArrayList. The .size() method is particularly useful when you need to:

Let's see how to apply these concepts with clear examples:

List<Integer> numbers = new ArrayList<>(List.of(10, 20, 30, 40, 50));

// Iterating through the ArrayList
for (int i = 0; i < numbers.size(); i++) {
    System.out.println(numbers.get(i));
}

// Accessing the last element
System.out.println(numbers.get(numbers.size() - 1)); // Output: 50

// Checking if the ArrayList is empty
if (numbers.size() == 0) {
    System.out.println("The ArrayList is empty.");
} else {
    System.out.println("The ArrayList is not empty.");
}

Examples and Use Cases

Let's explore some more examples and real-world use cases where understanding the size of an ArrayList is beneficial:

List<String> tasks = new ArrayList<>(List.of("Task 1", "Task 2", "Task 3"));

// Adding a new task
tasks.add("Task 4");
System.out.println("Number of tasks: " + tasks.size()); // Output: 4

// Removing a task
tasks.remove("Task 2");
System.out.println("Number of tasks: " + tasks.size()); // Output: 3

// Accessing the last task
System.out.println("Last task: " + tasks.get(tasks.size() - 1)); // Output: Task 4

In this example, we manage a list of tasks by adding and removing items, and we use the .size() method to keep track of the number of tasks.

Common Pitfalls and Best Practices

When working with the size of an ArrayList, there are some common mistakes to avoid:

Best practices include:

Advanced Techniques

For advanced usage, you can combine the .size() method with other collection methods to perform complex operations. For example, you can use streams to filter and process elements based on their size:

List<String> words = new ArrayList<>(List.of("apple", "banana", "cherry", "date", "elderberry"));

// Filtering words with length greater than 5
List<String> longWords = words.stream()
                                  .filter(word -> word.length() > 5)
                                  .collect(Collectors.toList());

System.out.println("Long words: " + longWords); // Output: [banana, cherry, elderberry]

This example demonstrates how to use streams to filter elements based on their length, showcasing the power of combining ArrayList methods with other Java features.

Code Implementation

Here is a well-commented code snippet demonstrating the correct use of the .size() method in various scenarios:

import java.util.ArrayList;
import java.util.List;

public class ArrayListSizeExample {
    public static void main(String[] args) {
        // Creating an ArrayList with initial elements
        List<Integer> numbers = new ArrayList<>(List.of(10, 20, 30, 40, 50));

        // Printing the size of the ArrayList
        System.out.println("Size of the ArrayList: " + numbers.size()); // Output: 5

        // Removing an element
        numbers.remove(2); // Removes the element at index 2 (30)
        System.out.println("Size after removal: " + numbers.size()); // Output: 4

        // Accessing the last element
        System.out.println("Last element: " + numbers.get(numbers.size() - 1)); // Output: 50

        // Iterating through the ArrayList
        for (int i = 0; i < numbers.size(); i++) {
            System.out.println("Element at index " + i + ": " + numbers.get(i));
        }

        // Checking if the ArrayList is empty
        if (numbers.size() == 0) {
            System.out.println("The ArrayList is empty.");
        } else {
            System.out.println("The ArrayList is not empty.");
        }
    }
}

Debugging and Testing

When debugging code that involves ArrayList size, consider the following tips:

For testing, you can write unit tests to verify the behavior of your methods that manipulate the ArrayList:

import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.*;

import java.util.ArrayList;
import java.util.List;

public class ArrayListSizeTest {
    @Test
    public void testArrayListSize() {
        List<Integer> numbers = new ArrayList<>(List.of(10, 20, 30, 40, 50));
        assertEquals(5, numbers.size());

        numbers.remove(2);
        assertEquals(4, numbers.size());

        assertEquals(50, numbers.get(numbers.size() - 1));
    }
}

Thinking and Problem-Solving Tips

When approaching problems related to ArrayList size, consider the following strategies:

Conclusion

In this lesson, we covered the importance of understanding and using the .size() method with ArrayList in Java. Mastering this concept allows you to effectively manage and manipulate dynamic lists, which is a fundamental skill in programming. We encourage you to practice and explore further applications to solidify your understanding.

Additional Resources

For further reading and practice problems, consider the following resources: