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)
使用 get(int index) 方法可快速取得索引处的元素,返回类型为泛型 E,无需强制转换。
- 索引从 0 开始,最大有效索引是
list.size() - 1 - 若传入负数或超出范围的索引,运行时抛出
IndexOutOfBoundsException - 该操作时间复杂度为 O(1),因为底层是数组,支持随机访问
示例:
List<String> list = new ArrayList<>(Arrays.asList("a", "b", "c"));String s = list.get(1); // 返回 "b"
修改指定位置的元素(set)
set(int index, E element) 用新元素替换原位置上的值,并返回被替换的旧元素。
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
立即学习“Java免费学习笔记(深入)”;
- 同样要求索引合法,不支持在末尾“添加”——想扩展长度需用
add() - 不会改变列表大小,仅更新已有位置的内容
- 返回值是原位置的元素,可用于记录或判断
示例:
String old = list.set(0, "x"); // old = "a",list 变为 ["x", "b", "c"]常见注意事项
实际使用中容易忽略边界和空值处理:
- 调用前建议先检查
index >= 0 && index ,尤其在循环或用户输入场景 -
set()不接受null元素(除非泛型允许,如List<String>本身支持存null) - 多线程环境下,
ArrayList非线程安全,需额外同步或改用Collections.synchronizedList
替代方案参考
如果需要频繁在头部/中间插入或删除,ArrayList 效率较低(O(n)),此时可考虑:
-
LinkedList:适合频繁增删,但随机访问慢 -
ArrayDeque:高效头尾操作,不支持按索引设值 - 不可变集合(如
Lists.immutable或ImmutableList):若不需要修改,更安全

















