如何遍历ArrayList集合,并安全删除其中的元素[通俗易懂]

如何遍历ArrayList集合,并安全删除其中的元素[通俗易懂]如何遍历ArrayList集合,并安全删除其中的元素?1、遍历ArrayList集合有三种方式(1)for循环(2)增强for循环,也就是foreach(3)迭代器iterator2、普通for循环遍历删除元素,list集合的大小会变小,而索引也会发生改变,所以利用ffor循环遍历删除元素会漏调某些元素。例如我for循环遍历删除第一个元素,接着按照…

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

如何遍历ArrayList集合,并安全删除其中的元素?

1、遍历ArrayList集合有三种方式
    (1)for循环
    (2)增强for循环,也就是foreach
    (3)迭代器iterator
2、普通for循环遍历删除元素,list集合的大小会变小,而索引也会发生改变,所以利用f
   for循环遍历删除元素会漏调某些元素。
   例如我for循环遍历删除第一个元素,接着按照索引去寻找第二个元素,由于删除的关系
   后面所有的元素都会往前面移动一位,就会导致按照索引得到的是第三个元素。
   解决方法:将list集合反过来遍历,循环删除其中的元素
   
   当我们使用增强for循环删除第一个元素后,再去遍历list集合,此时就会报并发修改错
   (concurrentModificationException异常)。
   通过查看list的remove方法的源码,我们可以看到,remove方法中有一个modCount++操作,
   然后再list集合的迭代器中有一个check操作,也就是检查modCount是否改变,如果改变
   就会抛出并发修改错误。
   解决方法:增强for循环遍历删除第一个元素后就break跳出。
   
   使用迭代器循环遍历删除某些元素,不会出现问题,但是我们要注意的是,使用的是
   iteraror.remove()方法,而不是list.remove()方法;如果使用的是list的remove方法,
   同样会报conCurrentModificationbException异常
3、总结
   如果是遍历删除list集合中某个特定的元素,使用这三个遍历方式都可以。
   如果要循环遍历删除多个元素,最好使用迭代器。其次使用普通for循环反过来遍历list集合
   
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

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

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • sql语句 模糊查找like

    sql语句 模糊查找like模糊查找:like语法形式:字段like’要查找字符’说明:1、like模糊查找用于对字符类型的字段进行字符匹配查找。2、要查找的字符中,有两个特殊含义的字符:%,_:2.1:%含义是:代表0或多个的任意字符2.2:_含义是:代表1个任意字符2.3:这里的字符都是指现实中可见的一个“符号”,而不是字节。3、语法:like’%关键字%’SELECT*FROMstudentWHERENAMELIKE’张%’;–…

    2022年6月5日
  • poi技术实现Excel导入_java json库

    poi技术实现Excel导入_java json库J2EE下Excel转JSON题外话:苦逼毕业狗,在北京做Android还没毕业就10K,回到长沙后连个面试机会都没有。毕业狗总是被瞧不起没有工作经验,好歹我在北京干了大半年呢。一是Android开发太饱和了,门槛低,谁学谁会,二是Android原生开发不行了,在Hybrid混合式和FaceBook主推的ReactNative新开发模式下,越来越多新型创业公司钟情于后两种开发模式。所以我果断抛弃An

    2022年5月3日
  • C++下截取字符串「建议收藏」

    C++下截取字符串「建议收藏」std::string::substrstringsubstr(size_tpos=0,size_tlen=npos)const;功能:按照条件截取字符串参数:pos=截取起始位      len=截取长度用法1:截取下标从2(第3个字符)开始到字符串结尾的字符串stringstr=”ABCDEFG”;str

    2022年5月19日
  • 六大主流大数据采集平台架构分析[通俗易懂]

    六大主流大数据采集平台架构分析[通俗易懂]日志收集的场景DT时代,数以亿万计的服务器、移动终端、网络设备每天产生海量的日志。中心化的日志处理方案有效地解决了在完整生命周期内对日志的消费需求,而日志从设备采集上云是始于足下的第一步。随着大数据越来越被重视,数据采集的挑战变的尤为突出。今天为大家介绍几款数据采集平台:ApacheFlumeFluentdLogstashChukwaScribeSplunkForwar

    2022年6月10日
  • hadoop集群搭建(超详细版)「建议收藏」

    hadoop集群搭建(超详细版)「建议收藏」1.准备好需要安装的软件虚拟机VMware12.pro操作系统CentOS6.5远程控制虚拟机的终端SecureCRT8.12.在虚拟机中安装CentOS操作系统安装好虚拟机,图形界面如下图创建新的虚拟机,选择自定义(高级),点击下一步虚拟机硬件兼容性默认,浏览需要安装的CentOS6.5镜像文件自定义用户名和密码(用于登录)设置虚…

    2022年10月15日
  • resnet34 pytorch_pytorch环境搭建

    resnet34 pytorch_pytorch环境搭建导师的课题需要用到图片分类;入门萌新啥也不会,只需要实现这个功能,给出初步效果,不需要花太多时间了解内部逻辑。经过一周的摸索,建好环境、pytorch,终于找到整套的代码和数据集,实现了一个小小的分类。记录一下使用方法,避免后续使用时遗忘。感谢各位大佬的开源代码和注释!找到一个大佬的视频讲解和代码开源:github:https://github.com/WZMIAOMIAO/deep-learning-for-image-processing/tree/master/data_setbilb

    2022年9月1日

发表回复

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

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