ArrayList 通过 get(int index) 和 set(int index, E element) 获取和修改元素,索引需满足 0 ≤ index < size(),否则抛出 IndexOutOfBoundsException。

Java 中使用 ArrayList 获取和修改指定索引位置的元素,主要靠 get(int index) 和 set(int index, E element) 两个方法,但必须确保索引在合法范围内(0 ≤ index ),否则会抛出 <code>IndexOutOfBoundsException。
获取指定索引位置的元素
调用 get(index) 方法直接返回该位置的元素。注意:它不检查元素是否为 null,只校验索引边界。
- 如果
index小于 0 或大于等于当前列表长度(list.size()),运行时抛出IndexOutOfBoundsException - 若元素本身是
null,get()仍正常返回null,不会报错 - 示例:
String s = list.get(2);—— 获取第 3 个元素(索引从 0 开始)
修改指定索引位置的元素
使用 set(index, element) 替换原位置的值,返回被替换的旧元素。该操作不改变列表长度。
- 同样要求索引有效,越界会抛异常
- 新元素可以为
null,比如list.set(1, null)是合法的 - 示例:
Integer old = list.set(0, 99);—— 把第一个元素改为 99,并拿到原来的值
安全访问前先判断索引有效性
避免异常的常见做法是访问前检查索引是否合法:
立即学习“Java免费学习笔记(深入)”;
- 用
if (index >= 0 && index 判断 - 封装工具方法,如
safeGet(list, index, defaultValue),索引无效时返回默认值 - 对用户输入或外部数据做索引校验,不要盲目信任
常见误区提醒
容易混淆的点需要特别注意:
-
set()不是添加元素,add(index, element)才是在指定位置插入(会移动后续元素) -
get()和set()都不能用于空列表(size()==0)的任意索引,哪怕index==0也不行 - 多线程环境下直接操作
ArrayList不安全,需额外同步或改用Collections.synchronizedList


















