arraylist 修改指定索引元素使用 set(int index, e element) 方法,替换原值并返回旧元素;索引需满足 0 ≤ index
Java 中 ArrayList 修改指定索引位置的元素,用 set(int index, E element) 方法即可,它会用新元素替换原位置的值,并返回被替换的旧元素。
基本用法:set() 替换指定位置的元素
调用
list.set(index, newElement)即可完成修改。注意索引必须在合法范围内(0 ≤ index ),否则抛出IndexOutOfBoundsException。
- 索引从 0 开始,例如第 1 个元素对应 index = 0
- 不能越界:若 list 有 5 个元素,有效索引是 0~4,传入 5 或 -1 都会报错
- 该操作是 O(1) 时间复杂度,因为底层是数组,直接按下标赋值
完整示例代码
以下是一个可运行的小例子:
ArrayList<string> list = new ArrayList(Arrays.asList("a", "b", "c", "d")); System.out.println(list); // [a, b, c, d] list.set(2, "xyz"); // 把索引 2(即第 3 个)的 "c" 改成 "xyz" System.out.println(list); // [a, b, xyz, d] String old = list.set(0, "hello"); // 返回被替换的旧值 System.out.println(old); // a System.out.println(list); // [hello, b, xyz, d]</string>常见注意事项
- ArrayList 不支持直接通过
list[index] = value修改(Java 没有操作符重载,也不支持数组式赋值语法)- 如果想“插入”而非“替换”,应使用
add(int index, E element),它会让后续元素后移- 修改 null 元素也完全合法:
list.set(1, null)是允许的- 多线程环境下非线程安全,如需并发修改,请考虑
Collections.synchronizedList或CopyOnWriteArrayList替代方案:遍历中修改(不推荐用于单次修改)
虽然可以用 for 循环或迭代器定位后修改,但纯属绕路:
- for-i 循环:找到索引后仍要调用
set(i, x),不如直接 set- 增强 for 或迭代器无法安全修改当前元素(除非用 ListIterator 的 set 方法,但更繁琐)
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南












