7.1

ArrayList Basics

AP Computer Science A

Importing ArrayList

java
import java.util.ArrayList;

Creating an ArrayList

java
ArrayList<String> names = new ArrayList<String>();
// or with diamond operator (preferred):
ArrayList<String> names = new ArrayList<>();

Common type declarations

java
ArrayList<String> words = new ArrayList<>();
ArrayList<Integer> numbers = new ArrayList<>();
ArrayList<Double> prices = new ArrayList<>();
ArrayList<Boolean> flags = new ArrayList<>();

Wrapper classes

java
ArrayList<Integer> nums = new ArrayList<>();
nums.add(42);          // autoboxing: int → Integer
int val = nums.get(0); // unboxing: Integer → int

The core ArrayList methods

`add(E obj)` — append to end

java
ArrayList<String> colors = new ArrayList<>();
colors.add("red");
colors.add("blue");
colors.add("green");
System.out.println(colors);  // [red, blue, green]

`add(int index, E obj)` — insert at position

java
colors.add(1, "yellow");  // insert at index 1
System.out.println(colors);  // [red, yellow, blue, green]

`get(int index)` — retrieve element

java
String first = colors.get(0);  // "red"
String second = colors.get(1); // "yellow"

`set(int index, E obj)` — replace element

java
colors.set(2, "navy");  // replace "blue" with "navy"
System.out.println(colors);  // [red, yellow, navy, green]
java
String old = colors.set(0, "crimson");
System.out.println(old);  // "red"

`remove(int index)` — remove by position

java
colors.remove(1);  // removes "yellow"
System.out.println(colors);  // [crimson, navy, green]

`size()` — number of elements

java
System.out.println(colors.size());  // 3

Step-by-step trace

java
ArrayList<Integer> list = new ArrayList<>();
list.add(10);
list.add(20);
list.add(30);
list.add(1, 15);
list.set(3, 35);
list.remove(0);

ArrayList of objects

java
public class Student {
    private String name;
    private int grade;
    
    public Student(String name, int grade) {
        this.name = name;
        this.grade = grade;
    }
    
    public String getName() { return name; }
    public int getGrade() { return grade; }
    
    public String toString() {
        return name + " (" + grade + ")";
    }
}
java
ArrayList<Student> roster = new ArrayList<>();
roster.add(new Student("Alice", 95));
roster.add(new Student("Bob", 87));
roster.add(new Student("Carol", 92));

System.out.println(roster);
// [Alice (95), Bob (87), Carol (92)]

The `remove` trap with Integer

java
ArrayList<Integer> nums = new ArrayList<>();
nums.add(10);
nums.add(20);
nums.add(30);

nums.remove(1);      // removes element at INDEX 1 → removes 20
// nums is now [10, 30]
java
nums.remove(Integer.valueOf(10));  // removes the value 10

Bounds checking

java
ArrayList<String> list = new ArrayList<>();
list.add("only");

list.get(5);  // IndexOutOfBoundsException!
list.get(-1); // IndexOutOfBoundsException!

Printing an ArrayList

java
ArrayList<String> pets = new ArrayList<>();
pets.add("cat");
pets.add("dog");
pets.add("fish");

System.out.println(pets);  // [cat, dog, fish]

Complete example: To-do list manager

java
import java.util.ArrayList;

public class TodoList {
    private ArrayList<String> tasks;
    
    public TodoList() {
        tasks = new ArrayList<>();
    }
    
    public void addTask(String task) {
        tasks.add(task);
    }
    
    public void insertTask(int position, String task) {
        if (position >= 0 && position <= tasks.size()) {
            tasks.add(position, task);
        }
    }
    
    public String completeTask(int index) {
        if (index >= 0 && index < tasks.size()) {
            return tasks.remove(index);
        }
        return null;
    }
    
    public void printTasks() {
        System.out.println("To-Do List (" + tasks.size() + " tasks):");
        for (int i = 0; i < tasks.size(); i++) {
            System.out.println("  " + (i + 1) + ". " + tasks.get(i));
        }
    }
    
    public static void main(String[] args) {
        TodoList todo = new TodoList();
        todo.addTask("Study arrays");
        todo.addTask("Practice FRQs");
        todo.addTask("Review notes");
        todo.insertTask(1, "Read chapter 7");
        
        todo.printTasks();
        
        String done = todo.completeTask(0);
        System.out.println("\nCompleted: " + done);
        
        todo.printTasks();
    }
}
To-Do List (4 tasks):
  1. Study arrays
  2. Read chapter 7
  3. Practice FRQs
  4. Review notes

Completed: Study arrays
To-Do List (3 tasks):
  1. Read chapter 7
  2. Practice FRQs
  3. Review notes

AP Exam Tips

Common Mistakes

Key Vocabulary