arraylist删除元素需按场景选择方法:索引删除用remove(int)、值删除用remove(object)、条件删除用removeif或iterator.remove(),禁用增强for循环边遍历边删,清空用clear()。

Java 中 ArrayList 删除元素有多种方式,关键要看你用的是索引、值,还是满足某个条件的元素,不同场景要选对方法,否则容易出错(比如 ConcurrentModificationException 或删错位置)。
按索引删除(最直接)
调用 remove(int index) 方法,删除指定下标处的元素,后面所有元素自动前移。注意索引不能越界(IndexOutOfBoundsException)。
- 返回被删除的元素(类型为
E) - 原 list 长度减 1
- 示例:
list.remove(2);—— 删除第 3 个元素(索引从 0 开始)
按值删除(删除第一个匹配项)
调用 remove(Object o) 方法,遍历 list,删除第一个等于指定对象的元素(依赖 equals() 判断)。
- 返回
true表示删除成功,false表示没找到 - 注意:如果元素是
null,会找第一个null值;如果是基本类型包装类,注意自动装箱和空指针 - 示例:
list.remove("apple");—— 删除第一个值为 "apple" 的字符串
批量删除或按条件删除(推荐用迭代器或 removeIf)
想删多个、或根据条件(如大于 10 的数字、包含某字符的字符串),千万别用普通 for 循环边遍历边 remove(),否则会跳过元素或报错。
- ✅ 推荐用
removeIf(Predicate)(Java 8+):list.removeIf(x -> x > 10); - ✅ 或用
Iterator的remove()方法:Iterator<string> it = list.iterator();<br>while (it.hasNext()) {<br> if (it.next().startsWith("A")) it.remove();<br>}</string> - ❌ 避免:
for (String s : list) { if (s.startsWith("A")) list.remove(s); }—— 会抛异常或漏删
清空全部元素
用 clear() 方法,快速移除所有元素,list 变为空但对象仍存在。
- 不释放底层数组内存(只是把 size 设为 0),如需真正缩小容量,可后续调用
trimToSize() - 示例:
list.clear();
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











