方法一 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循环删除元素方法相关推荐

  1. Java循环删除集合多个元素的正确打开方式

    首先说下不正确的打开方式: 第一:使用for循环删除集合的元素,示例代码如下 1 ArrayList<String> list = new ArrayList<String>( ...

  2. List集合for循环删除元素(Java)

    前言 首先说结论:无论什么场景,都不要对List使用for循环的同时,删除List集合元素,因为这么做就是不对的. 阿里开发手册也明确说明禁止使用foreach删除.增加List元素. 正确删除元素的 ...

  3. Java 循环删除list中指定元素

    Java 循环删除list中指定元素 1.for循环遍历删除指定元素 2.增强for循环删除指定元素 3.iterator删除指定元素 1.for循环遍历删除指定元素 List<String&g ...

  4. List中循环删除元素

    在Java中,因为List接口有remove()这个方法,我们只需要调用remove()方法,就可以删除List中的某个元素. 但是在for循环中用remove()就不太行了 根据面向百度开发的经验, ...

  5. go语言从零学起(二)--list循环删除元素(转载)

    本篇系转载 在使用go的container/list的package时,你可能会无意间踩一个小坑,那就是list的循环删除元素. list删除元素,直观写下来的代码如下: package mainim ...

  6. java迭代器删除元素_java迭代器中删除元素的操作

    我们知道通过Iterator,可以对集合中的元素进行遍历.那么在其中遇到我们不需要的元素时,可不可以在遍历的时候顺便给删除呢?答案是当然可以.在Iterator下有一个remove函数,专门用于删除的 ...

  7. java迭代器删除元素_java迭代器中删除元素的实例操作详解

    java迭代器中删除元素的实例操作详解 2021-01-21 16:40:08 我们知道通过Iterator,可以对集合中的元素进行遍历.那么在其中遇到我们不需要的元素时,可不可以在遍历的时候顺便给删 ...

  8. 原生js清空上一个元素内容_原生JS实现动态添加新元素、删除元素方法

    1. 添加新元素 动态添加新元素 Coffee Tea Coffee Tea var child = document.getElementsByClassName("child" ...

  9. 扩展JavaScript数组(Array)添加删除元素方法

    为JavaScript数组(Array)扩展 添加删除元素方法 作者:jcLee95:https://blog.csdn.net/qq_28550263?spm=1001.2101.3001.5343 ...

最新文章

  1. TCC分布式事务的实现原理
  2. mysql存储之int
  3. PHP中的PathInfo
  4. Erlang虚拟机的启动
  5. 我感觉这是目前讲得最明白的线性回归的文章了
  6. php redis key,redis 在 php 中的应用(key篇)
  7. 2049 : 压死骆驼的最后一根稻草 (规律)
  8. 【client】与【offset】
  9. 后端:循环遍历的用法介绍
  10. volatile关键字使用总结
  11. 【wps】wps怎样删除中间的一页?
  12. html5图片中加入文字,HTML肿么在图片上添加文字,也就是图片作为背景,代码和图像显示如下...
  13. 项目初始化报 404 Not Found - GET https://registry.npmjs.org
  14. 什么是熵,信息熵以及粗糙熵
  15. Kafka之消费全流程
  16. Houdini中角色通用修穿插方法
  17. QuickTime 专业版 pro 注册码
  18. vue项目报错:migrating.js?2bb5:56 [Element Migrating][ElInput][Event]: click is removed.
  19. 塔菲尔曲线如何分析_科学网—【电化学】浅谈塔菲尔动力学(Tafel Kinetics) - 付先彪的博文...
  20. FT,FS,DFT,DTFT,DFS,FFT的关系

热门文章

  1. 黑客白话: 客厅的路由器 会出卖你
  2. isEmpty 和 isBlank 区别
  3. JS中解决单击双击事件的冲突
  4. 成为UX设计师:你需要知道的六个基本步骤
  5. ipad iphone开发_如何解锁iPhone或iPad
  6. Spring框架(一) 底层核心原理解析
  7. 烤仔TVの尚书房 | 什么?社区还会自我成长?!
  8. 签订装修合同要注意哪些事项?
  9. PHP 超全局变量详解 $GLOBALS $_SERVER $_GET $_POST $_COOKIE $_FILES $_ENV $_REQUEST $_SESSION
  10. python写入excel怎么跨列居中_Python使用OpenPyXL处理Excel表格