如何遍历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集合
   
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 湖南省第七届大学生计算机程序设计竞赛 多连块拼图 (模拟)

    湖南省第七届大学生计算机程序设计竞赛 多连块拼图 (模拟)

    2021年12月16日
  • Nginx搭建视频点播和视频直播服务器

    Nginx搭建视频点播和视频直播服务器Nginx搭建视频点播和视频直播服务器一·、环境:Centos7,(推荐,Ubuntu不是很好用,经常会有一些莫名其妙的报错)Nginx1.10.1二、系统环境搭建首先,我是不建议自己一个个去安装这些软件的,耗时耗力,而且,容易出错,所以,最好使用yuminstall***命令安装,出错的概率小。资源链接:链接:https://pan.baidu.com/s/1WmJYpQ_b…

  • 超简单看明白如何求最长递增子序列-动态规划

    超简单看明白如何求最长递增子序列-动态规划最长递增子序列:给定一个长度为N的数组,找出一个最长的单调递增子序列,子序列不一定连续,但初始顺序不能乱。例如:给定一个长度为6的数组A{4,5,7,1,3,9},则其最长的单调递增子序列为{4,5,7,9},长度为4。动态规划思路:记d[i]为以任意一个A[i]为末尾元素组成的最长递增子序列的长度,找出所有位于i之前且比A[i]小的元素A[j],此时可出现两种情况:…

  • android toast居中显示_android Toast 弹出在屏幕中间位置以及自定义Toast

    android toast居中显示_android Toast 弹出在屏幕中间位置以及自定义ToastToast我想我们应该使用的都很多,一般我们使用默认设置较多,但是默认设置往往不能满足我们的需求,那我们现在来自定义下:默认Toast:Toast.makeText(MainActivity.this,”点击按钮”,Toast.LENGTH_SHORT).show();设置Toast位置:通过setGravity设置Toast位置,可以是Gravity.CENTER:中间Gravity.BOTT…

  • python读取excel文件显示文件不存在?_python写入excel文件

    python读取excel文件显示文件不存在?_python写入excel文件1、环境准备pipinstallxlrd导入xlrd2、读取Excel文件readfile=xlrd.open_workbook(r”E:\PycharmProjects\APITest\工作簿1.xls”)print(readfile)3、获取全部sheet名称#获取sheet名称names=readfile.sheet_names()print(names)4、选择所需要的sheet#获取sheet对象obj_sheet=readfile.shee

  • FilterDispatcher处理流程「建议收藏」

    FilterDispatcher处理流程「建议收藏」org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter前身是:org.apache.struts2.dispatcher.FilterDispatcher请求被web.xml中定义的过滤器拦截。3层过滤器处理:ActionContextCleanUp,其他过滤器(OtherFilters,SiteM…

发表回复

您的电子邮箱地址不会被公开。

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