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.
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.
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.
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:
ArrayList
.ArrayList
.ArrayList
is empty.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.");
}
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.
When working with the size of an ArrayList
, there are some common mistakes to avoid:
ArrayList
while iterating through it, which can lead to ConcurrentModificationException
. Use an iterator if you need to modify the list during iteration.Best practices include:
ArrayList
before accessing elements to avoid IndexOutOfBoundsException
.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.
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.");
}
}
}
When debugging code that involves ArrayList
size, consider the following tips:
ArrayList
at different points in your code.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));
}
}
When approaching problems related to ArrayList
size, consider the following strategies:
.size()
method to guide your logic, especially when iterating through the list or accessing elements from the end.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.
For further reading and practice problems, consider the following resources: