Java开发:list列表元素遍历删除
一、常见误区
1、提前结束遍历(直接使用列表长度进行遍历)
在list不断地删除元素的同时,总列表list的长度也在不断缩小,i值会提前和列表的总长度相等,导致遍历提前结束,造成前面的元素删掉了,但是结束时的长度后面的元素未能删掉。
2、下标越界(提前固定列表长度进行遍历)
相比于上一种提前结束的,这种方式提前取出了原列表的总长度,避免了遍历删除时长度变化导致提前结束。但依旧无法避免列表的动态变化,列表随着删除元素在不断缩小,后续的长度比原列表小的多,在遍历到超出现有列表的长度时,就会出现下标越界的问题。
二、可用方式
测试数据(遍历删除以下列表中包含“产品”的):
注:Arrays.asList生成的列表为定长列表,仅用来展示,不可进行add、remove等操作,需要后续转化为arraylist进行相关操作。
1、反向遍历(正向遍历删除会导致列表长度的缩小,与索引的逐渐增大现象结合后就会出现相应问题,只要反向使长度缩小和索引同步缩小结合就能避免)
2、迭代器遍历(迭代器类似于链表形式吧,过完一个元素就到下一个,不会像索引和长度两者结合使用一样出现跳过或者越界的情况)
三、另辟蹊径
删除操作其实可以用筛选来代替,直接筛选出来有用的部分数据,就相当于遍历删除了无用的数据。
通过列表的流筛选操作进行处理过滤:
最后效果是一样的,怎么方便怎么来。
__EOF__

本文作者:我命倾尘
本文链接:https://www.cnblogs.com/guobin-/p/17246851.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
本文链接:https://www.cnblogs.com/guobin-/p/17246851.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
2020-03-23 阿里云服务器使用记录:服务器运行的网页无法访问