Java ArrayList

ArrayList 的增删改查、遍历、扩容机制与常用方法。

Beginner
Key PointsArrayList 是可变长数组,按下标读 O(1)、中间插入 O(n);删除元素后下标会前移。

创建与添加

new ArrayList<>() creates an empty list; add(e) appends and add(i, e) inserts. Put the element type in the generic brackets — omitting it yields Object and forces casts.

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

public class ArrayListAdd {
    public static void main(String[] args) {
        List<String> list = new ArrayList<>();

        list.add("a");
        list.add("c");
        list.add(1, "b");

        System.out.println(list);
        System.out.println(list.size());
        System.out.println(list.get(1));
    }
}
Output
[a, b, c]
3
b

访问与修改

get(i) reads by index, set(i, e) replaces and returns the old value, indexOf finds a position and contains tests presence. Out-of-range indices throw IndexOutOfBoundsException.

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

public class ArrayListGet {
    public static void main(String[] args) {
        List<String> list = new ArrayList<>(List.of("a", "b", "c"));

        System.out.println(list.get(0));
        System.out.println(list.set(0, "z"));
        System.out.println(list);
        System.out.println(list.indexOf("c"));
        System.out.println(list.contains("b"));
    }
}
Output
a
a
[z, b, c]
2
true

删除元素

remove(int) deletes by index and remove(Object) by value. For List<Integer>, remove(1) is treated as an index — use remove(Integer.valueOf(1)) to delete a value.

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

public class ArrayListRemove {
    public static void main(String[] args) {
        List<String> list = new ArrayList<>(List.of("a", "b", "c"));

        System.out.println(list.remove(0));
        System.out.println(list);

        List<Integer> nums = new ArrayList<>(List.of(10, 20, 30));
        nums.remove(1);
        System.out.println(nums);

        nums.remove(Integer.valueOf(10));
        System.out.println(nums);
    }
}
Output
a
[b, c]
[10, 30]
[30]

遍历

Three ways: for-each is shortest, an indexed for gives positions, and Iterator allows safe removal. Pick by whether you need the index or deletion.

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

public class ArrayListLoop {
    public static void main(String[] args) {
        List<String> list = new ArrayList<>(List.of("a", "b"));

        for (String s : list) {
            System.out.print(s + " ");
        }
        System.out.println();

        for (int i = 0; i < list.size(); i++) {
            System.out.println(i + ":" + list.get(i));
        }
    }
}
Output
a b 
0:a
1:b

ArrayList 方法

The everyday API: add, get, set, remove, size, isEmpty, contains, indexOf, clear, subList, sort, toArray. Most mutate in place; subList returns a view.

Java
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

public class ArrayListMethods {
    public static void main(String[] args) {
        List<Integer> nums = new ArrayList<>(List.of(3, 1, 2));

        System.out.println(nums.isEmpty());
        Collections.sort(nums);
        System.out.println(nums);
        System.out.println(nums.subList(0, 2));

        nums.clear();
        System.out.println(nums.isEmpty());
        System.out.println(nums.size());
    }
}
Output
false
[1, 2, 3]
[1, 2]
true
0

Friends & Partners