get() 获取、set() 修改指定索引元素需索引合法(0 ≤ index
用
get()获取、set()修改指定索引位置的元素,前提是索引合法——即在0到size() - 1范围内,否则会抛出IndexOutOfBoundsException。获取指定索引位置的元素
调用
list.get(index)直接返回该位置的元素值。
- 索引从 0 开始,比如
list.get(0)取第一个元素- 即使元素本身是
null,get()也正常返回,不报错- 若
index 或 <code>index >= list.size(),运行时立即抛异常- 空列表(
size() == 0)时,任何索引(包括0)都会越界修改指定索引位置的元素
调用
list.set(index, element)替换原位置的值,返回被替换的旧元素。
- 不会改变列表长度,只是“就地更新”
- 新值可以为
null,例如list.set(1, null)是合法操作- 同样要求索引有效,越界行为与
get()一致- 注意:这不是插入,
add(int index, E e)才会在指定位置插入并移动后续元素安全访问的实用建议
避免因外部输入或计算错误导致越界,推荐提前校验。
- 手动检查:
if (index >= 0 && index- 封装工具方法,如
safeGet(list, index, defaultValue),越界时返回默认值- 对用户输入、配置文件读取的索引,务必做范围验证,不盲目信任
常见误区提醒
几个容易混淆的点需要特别注意:
set()和add(int index, E e)功能不同:前者替换,后者插入get()和set()都不能用于空列表的任意索引,哪怕index == 0- 想根据元素值找索引,要用
indexOf(Object o),它返回第一次出现的位置,找不到则返回-1- 不要把循环变量
i当作元素值去调indexOf(i),那查的是值i的位置,不是当前下标












