如何使用 Java ArrayList 的 remove() 方法按索引或对象删除特定元素?
- 内容介绍
- 文章标签
- 相关推荐
本文共计676个文字,预计阅读时间需要3分钟。
Java中,使用`ArrayList.remove()`方法时,提供两种重载方式:
按索引删除:remove(int index)
传入一个 int 类型的下标,删除该位置的元素,并将后续元素前移。索引从 0 开始,必须满足 0 ≤ index ,否则抛出 <code>IndexOutOfBoundsException。
- 调用后集合大小减 1,原索引位置之后的所有元素下标都减 1
- 返回被删除的元素(类型为泛型 E,比如 String、Integer)
- 示例:list.remove(2) 删除第 3 个元素(索引为 2)
按对象删除:remove(Object o)
传入一个 Object 类型的值,遍历集合,用 equals() 方法比较,**删除第一个匹配的元素**(从头开始找)。不关心索引,只认内容相等。
- 如果找到并删除,返回
true;没找到,返回false - 注意:对 null 元素也支持(用 == 判断),且自定义类需正确重写
equals() - 示例:list.remove("hello") 删除第一个值为 "hello" 的字符串
容易踩坑的典型问题
最常见错误是向 remove() 传入一个整数常量(如 list.remove(5)),本意是删值为 5 的元素,结果却触发了 remove(int) 版本,删掉了索引为 5 的元素——尤其当列表里存的是 Integer 时更难察觉。
立即学习“Java免费学习笔记(深入)”;
- 解决办法:明确类型。要删对象,就强转成 Object:list.remove((Integer)5) 或 list.remove(Integer.valueOf(5))
- 遍历时删除多个元素?别直接用普通 for 循环调 remove(int),会导致跳过下一个元素。改用迭代器
Iterator.remove()或倒序 for 循环 - 删除所有匹配项?不能只调一次
remove(o),它只删第一个。可用removeIf(predicate)(Java 8+)或循环 + 迭代器
实用小技巧
快速判断该用哪个 remove:
- 你要删“第几个” → 用
remove(int index) - 你要删“值是多少” → 用
remove(Object o),确保传的是对象而非基本类型字面量 - 不确定类型又怕误调?可先用
list.indexOf(o)获取索引,再用remove(index)(适合需要确认存在性时)
本文共计676个文字,预计阅读时间需要3分钟。
Java中,使用`ArrayList.remove()`方法时,提供两种重载方式:
按索引删除:remove(int index)
传入一个 int 类型的下标,删除该位置的元素,并将后续元素前移。索引从 0 开始,必须满足 0 ≤ index ,否则抛出 <code>IndexOutOfBoundsException。
- 调用后集合大小减 1,原索引位置之后的所有元素下标都减 1
- 返回被删除的元素(类型为泛型 E,比如 String、Integer)
- 示例:list.remove(2) 删除第 3 个元素(索引为 2)
按对象删除:remove(Object o)
传入一个 Object 类型的值,遍历集合,用 equals() 方法比较,**删除第一个匹配的元素**(从头开始找)。不关心索引,只认内容相等。
- 如果找到并删除,返回
true;没找到,返回false - 注意:对 null 元素也支持(用 == 判断),且自定义类需正确重写
equals() - 示例:list.remove("hello") 删除第一个值为 "hello" 的字符串
容易踩坑的典型问题
最常见错误是向 remove() 传入一个整数常量(如 list.remove(5)),本意是删值为 5 的元素,结果却触发了 remove(int) 版本,删掉了索引为 5 的元素——尤其当列表里存的是 Integer 时更难察觉。
立即学习“Java免费学习笔记(深入)”;
- 解决办法:明确类型。要删对象,就强转成 Object:list.remove((Integer)5) 或 list.remove(Integer.valueOf(5))
- 遍历时删除多个元素?别直接用普通 for 循环调 remove(int),会导致跳过下一个元素。改用迭代器
Iterator.remove()或倒序 for 循环 - 删除所有匹配项?不能只调一次
remove(o),它只删第一个。可用removeIf(predicate)(Java 8+)或循环 + 迭代器
实用小技巧
快速判断该用哪个 remove:
- 你要删“第几个” → 用
remove(int index) - 你要删“值是多少” → 用
remove(Object o),确保传的是对象而非基本类型字面量 - 不确定类型又怕误调?可先用
list.indexOf(o)获取索引,再用remove(index)(适合需要确认存在性时)

