如何使用 Java ArrayList 的 remove() 方法按索引或对象删除特定元素?

2026-05-03 01:513阅读0评论SEO资讯
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计676个文字,预计阅读时间需要3分钟。

如何使用 Java ArrayList 的 remove() 方法按索引或对象删除特定元素?

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)(适合需要确认存在性时)
标签:Java

本文共计676个文字,预计阅读时间需要3分钟。

如何使用 Java ArrayList 的 remove() 方法按索引或对象删除特定元素?

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)(适合需要确认存在性时)
标签:Java