遍历ArrayList的过程中移除元素的方式

遍历ArrayList的过程中移除元素的方式错误方法一使用for循环正序遍历ArrayList,使用remove移除元素结果如下,只删除了一个“3”原因:在匹配到第一个要删除的元素并移除时,后面元素会往前移位,导致索引位置改变,从而漏掉后面一个元素。publicstaticvoidmain(String[]args){ ArrayList<String>list=newArrayList<>(); list.add(“1”); list.add(“2”); list.add(“3”

大家好,又见面了,我是你们的朋友全栈君。

错误方法一

使用for循环正序遍历ArrayList,使用remove移除元素
结果如下,只删除了一个“3”

原因:在匹配到第一个要删除的元素并移除时,后面元素会往前移位,导致索引位置改变,从而漏掉后面一个元素。

public static void main(String[] args) { 
   
	 ArrayList<String> list = new ArrayList<>();
	 list.add("1");
	 list.add("2");
	 list.add("3");
	 list.add("3");
	 list.add("5");
	 list.add("6");
	 list.add("7");
	
	 for (int i = 0; i < list.size(); i++){ 
   
	     if (list.get(i).equals("3"))
	         list.remove(i);
	 }
	 
	 System.out.println(list);
}
原list:[1, 2, 3, 3, 5, 6, 7]
移除后: [1, 2, 3, 5, 6, 7]

错误方法二

使用增强for循环遍历ArrayList移除元素,
会产生java.util.ConcurrentModificationException,因为元素在使用的时候发生了并发的修改,导致异常抛出

for (String s : list) { 
   
    if (s.equals("3"))
        list.remove(s);
}

结果:

Exception in thread "main" java.util.ConcurrentModificationException

正确方法一

使用for循环倒序遍历ArrayList,使用remove移除元素
数组倒序遍历时即使发生元素删除也不影响后序元素遍历,因为前面的元素位置不会改变。

for (int i = list.size() - 1; i >= 0; i--){ 
   
    if (list.get(i).equals("3"))
        list.remove(i);
}

正确方法二

使用迭代器remove方法删除(推荐)

Iterator<String> iterator = list.iterator();
while (iterator.hasNext()){ 
   
    String s = iterator.next();
    if (s.equals("3"))
        iterator.remove();
}
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/163103.html原文链接:https://javaforall.net

(0)
上一篇 2022年7月22日 下午2:00
下一篇 2022年7月22日 下午2:00


相关推荐

  • SSM 项目 ——— 小米商城后台管理系统

    SSM 项目 ——— 小米商城后台管理系统目录一、项目名称二、使用技术三、开发步骤四、具体实现1、创建数据库表2、项目结构3、配置文件一、项目名称名称:小米商城后台管理系统本项目主要目的是使学员更深层的了解IT企业的文化和岗位需求、模拟企业的工作场景,分享研制成果,增加学员对今后工作岗位及计算机应用开发对客观世界影响的感性认识,使学员对技术有更深入的理解,在今后工作中能有更明确的目标和方向。并能为日后职业规划提供很好的指导作用。二、使用技术服务端:Spring+SpringMVC+MyBatis框架整合数据库:MySql8.0

    2022年6月27日
    66
  • 一元线性回归-最小二乘法推导过程

    一元线性回归-最小二乘法推导过程设一元线性回归方程为,数据样本点为,要想使这n个样本点落在一元线性回归方程附近,不妨设误差为,使得没一个样本点落在一元线性回归方程上,因此有恒成立,所以回归直线应满足的条件是:实际值与回归估计值之间的误差平方和最小,即:此时令,原问题就转换成求解二元函数极小值问题,分别对求偏导:令上两式等于零,即最终求出两个数值,一元线性回归方程也就拟合出来了。…

    2022年5月17日
    64
  • 英语商务邮件常用句子_商务英语email写作

    英语商务邮件常用句子_商务英语email写作1.Iamwritingtoconfirm/enquire/informyou…我发邮件是想找你确认/询问/想通知你有关…2.IamwritingtofollowuponourearlierdecisiononthemarketingcampaigninQ2.我写邮件来是为了跟进我们之前对第二季度营销活动的决定。3

    2022年10月20日
    4
  • 学生认证,专业版pycharm

    学生认证,专业版pycharm学生认证pycharm学习自https://blog.csdn.net/qq_36667170/article/details/79905198感谢分享以下记录下自己的过程1、https://www.jetbrains.com/pycharm/buy/?fromIDE#discounts?billing=yearly页面现在变成这样了2、选择Forstudentsandteachers下的learnmore3、Applynow4、填写表单,(一定要是教育邮箱,可以在学校

    2022年8月29日
    8
  • Midjourney中国风提示词关键词_传统元素运用指南【国风】

    Midjourney中国风提示词关键词_传统元素运用指南【国风】

    2026年3月15日
    3
  • eclipse导入本地Java项目

    eclipse导入本地Java项目之前都是在 eclipse 下直接建立 Java 项目的 今天做一个项目时 需要把做好的项目压缩发送给别人 让别人来运行该项目 就需要写一个简单的操作说明给对方 方便对方使用 然而发现自己不会 对此 说一下如何把本地 Java 项目导入 eclipse 来运行该项目 步骤一 首先打开 eclipse 点击左上角 File 步骤二 点击 Import 步骤三 点击 General

    2026年3月26日
    1

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号