Java循环删除元素方法
方法一 for循环遍历list
这种方式的问题在于,删除某个元素后,list的大小发生了变化,而你的下标也在变化,所以会导致你在遍历的时候漏掉某些元素。
比如当你删除第1个元素后,继续根据索引访问第2个元素时,因为删除的关系后面的元素都往前移动了一位,所以实际访问的是第3个元素。因此,这种方式可以用在删除特定的一个元素时使用,但不适合循环删除多个元素时使用。
for (int i = 0; i < list.size(); i++) {if (list.get(i).equals(2)) {list.remove(i);}}
方法二 增强for循环
这种方式的问题在于,删除元素后继续循环会报错误信息ConcurrentModificationException,因为元素在使用的时候发生了并发的修改,导致异常抛出。但是删除完毕马上使用break跳出,则不会触发报错。
for (Integer item : list) {if (item.equals(2)) {list.remove(item);}}
方法三 iterator遍历
这种方式可以正常的循环及删除。但要注意的是,使用iterator的remove方法,如果用list的remove方法同样会报上面提到的ConcurrentModificationException错误。
Iterator<Integer> it = list.iterator();while (it.hasNext()) {Integer next = it.next();if (next.equals(2)) {it.remove();}}
总结
(1)循环删除list中特定一个元素的,可以使用三种方式中的任意一种,但在使用中要注意上面分析的各个问题。
(2)循环删除list中多个元素的,应该使用迭代器iterator方式。
Java循环删除元素方法相关推荐
- Java循环删除集合多个元素的正确打开方式
首先说下不正确的打开方式: 第一:使用for循环删除集合的元素,示例代码如下 1 ArrayList<String> list = new ArrayList<String>( ...
- List集合for循环删除元素(Java)
前言 首先说结论:无论什么场景,都不要对List使用for循环的同时,删除List集合元素,因为这么做就是不对的. 阿里开发手册也明确说明禁止使用foreach删除.增加List元素. 正确删除元素的 ...
- Java 循环删除list中指定元素
Java 循环删除list中指定元素 1.for循环遍历删除指定元素 2.增强for循环删除指定元素 3.iterator删除指定元素 1.for循环遍历删除指定元素 List<String&g ...
- List中循环删除元素
在Java中,因为List接口有remove()这个方法,我们只需要调用remove()方法,就可以删除List中的某个元素. 但是在for循环中用remove()就不太行了 根据面向百度开发的经验, ...
- go语言从零学起(二)--list循环删除元素(转载)
本篇系转载 在使用go的container/list的package时,你可能会无意间踩一个小坑,那就是list的循环删除元素. list删除元素,直观写下来的代码如下: package mainim ...
- java迭代器删除元素_java迭代器中删除元素的操作
我们知道通过Iterator,可以对集合中的元素进行遍历.那么在其中遇到我们不需要的元素时,可不可以在遍历的时候顺便给删除呢?答案是当然可以.在Iterator下有一个remove函数,专门用于删除的 ...
- java迭代器删除元素_java迭代器中删除元素的实例操作详解
java迭代器中删除元素的实例操作详解 2021-01-21 16:40:08 我们知道通过Iterator,可以对集合中的元素进行遍历.那么在其中遇到我们不需要的元素时,可不可以在遍历的时候顺便给删 ...
- 原生js清空上一个元素内容_原生JS实现动态添加新元素、删除元素方法
1. 添加新元素 动态添加新元素 Coffee Tea Coffee Tea var child = document.getElementsByClassName("child" ...
- 扩展JavaScript数组(Array)添加删除元素方法
为JavaScript数组(Array)扩展 添加删除元素方法 作者:jcLee95:https://blog.csdn.net/qq_28550263?spm=1001.2101.3001.5343 ...
最新文章
- TCC分布式事务的实现原理
- mysql存储之int
- PHP中的PathInfo
- Erlang虚拟机的启动
- 我感觉这是目前讲得最明白的线性回归的文章了
- php redis key,redis 在 php 中的应用(key篇)
- 2049 : 压死骆驼的最后一根稻草 (规律)
- 【client】与【offset】
- 后端:循环遍历的用法介绍
- volatile关键字使用总结
- 【wps】wps怎样删除中间的一页?
- html5图片中加入文字,HTML肿么在图片上添加文字,也就是图片作为背景,代码和图像显示如下...
- 项目初始化报 404 Not Found - GET https://registry.npmjs.org
- 什么是熵,信息熵以及粗糙熵
- Kafka之消费全流程
- Houdini中角色通用修穿插方法
- QuickTime 专业版 pro 注册码
- vue项目报错:migrating.js?2bb5:56 [Element Migrating][ElInput][Event]: click is removed.
- 塔菲尔曲线如何分析_科学网—【电化学】浅谈塔菲尔动力学(Tafel Kinetics) - 付先彪的博文...
- FT,FS,DFT,DTFT,DFS,FFT的关系
热门文章
- 黑客白话: 客厅的路由器 会出卖你
- isEmpty 和 isBlank 区别
- JS中解决单击双击事件的冲突
- 成为UX设计师:你需要知道的六个基本步骤
- ipad iphone开发_如何解锁iPhone或iPad
- Spring框架(一) 底层核心原理解析
- 烤仔TVの尚书房 | 什么?社区还会自我成长?!
- 签订装修合同要注意哪些事项?
- PHP 超全局变量详解 $GLOBALS $_SERVER $_GET $_POST $_COOKIE $_FILES $_ENV $_REQUEST $_SESSION
- python写入excel怎么跨列居中_Python使用OpenPyXL处理Excel表格