最近线上出了一个bug,竟然是List元素删除导致,这个本以为是常识,很基础的编码。可没想到还是会有新的开发同学出错。

错误的删除方式:for循环遍历集合,通过索引删除,看下面的错误❎演示:

 List<String> list = new ArrayList<>(4);list.add("a");list.add("b");list.add("b");list.add("c");for (int i = 0; i <list.size(); i++) {if (list.get(i).equals("b")) {list.remove(i);}}System.out.println(list);

运行结果为:[a, b, c]

以上代码是想删除集合中的“b”元素,然而并没有全部删除!

正确的操作方法:

方法1:

List<String> list = new ArrayList<>(4);list.add("a");list.add("b");list.add("b");list.add("c");
Iterator<String> it = list.iterator();while (it.hasNext()){String s =  it.next();if (s.equals("b")){it.remove();}}System.out.println(list);

方法2: 一行搞定

List<String> list = new ArrayList<>(4);list2.add("a");list2.add("b");list2.add("b");list2.add("c");list =  list.stream().filter(f -> !f.contains("b")).toList();System.out.println(list);

方法3:一行搞定

        List<String> list = new ArrayList<>(4);list.add("a");list.add("b");list.add("b");list.add("c");list.removeIf(s -> s.equals("b"));System.out.println(list);

以上三种方法,都没有问题,可以挑喜欢的用。

java List元素删除的正确方式相关推荐

  1. java 中启动线程的正确方式

    启动线程的正确方式是运行Thread类中的start()方法,使用run()方法只不过是运行了一个普通方法而已. 线程对象在初始化之后,由当前线程(主线程)执行的start()方法,然后去告诉jvm虚 ...

  2. java map循环删除_map循环删除某个元素

    下面代码展示了遍历Map时删除元素的正确方式和错误方式. import java.util.HashMap; import java.util.Iterator; import java.util.M ...

  3. JAVA中循环删除list中元素的方法总结

    原文:http://www.cnblogs.com/aspirant/p/7900854.html 印象中循环删除list中的元素使用for循环的方式是有问题的,但是可以使用增强的for循环,然后今天 ...

  4. JAVA中循环删除集合中元素的方法总结

    一.list集合循环删除元素 1.通过普通的for删除删除符合条件的多个元素 for(int i=0;i<list.size();i++){if(list.get(i).equals(" ...

  5. java list 范围删除_JAVA中循环删除list中元素(移除list两时间范围外的元素)

    印象中循环删除list中的元素使用for循环的方式是有问题的,但是可以使用增强的for循环,然后今天在使用时发现报错了,然后去科普了一下,再然后发现这是一个误区.下面就来讲一讲..伸手党可直接跳至文末 ...

  6. Java中循环删除list中元素的方法总结(总结)

    印象中循环删除list中的元素使用for循环的方式是有问题的,但是可以使用增强的for循环,然后在今天使用的时候发现报错了,然后去科普了一下,发现这是一个误区.下面我们来一起看一下. Java中循环遍 ...

  7. java set遍历删除元素_java中循环遍历删除List和Set集合中元素的方法

    今天在做项目时,需要删除List和Set中的某些元素,当时使用边遍历,边删除的方法,却报了以下异常: ConcurrentModificationException 为了以后不忘记,使用烂笔头把它记录 ...

  8. Java集合中元素删除

    在Java中删除集合中元素时,需要特别注意,一方面是因为,Java是并发编程语言,如果存在并发操作,则会出现逻辑异常:另一方面,在List中删除元素,如果操作不当,则会抛出异常. 阿里推出的<J ...

  9. java for循环删除元素_JAVA中循环删除list中元素的方法总结

    JAVA中循环遍历list有三种方式for循环.增强for循环(也就是常说的foreach循环).iterator遍历. 1.for循环遍历list for(int i=0;i if(list.get ...

最新文章

  1. 其实你做的大部分工作都是浪费
  2. python制作自动抢票_python自动抢票
  3. 4行代码AC——L1-026 I Love GPLT (5分)
  4. 单列集合Set的实现类HashSet
  5. jQuery中ajax请求的六种方法(三、五):$.getScript()方法
  6. Real-time HTML Editor (实时网页编辑器)
  7. pushbox(1)
  8. java数列的个位数求和_java二位数组相加
  9. python open w_python-文件操作示例
  10. 激烈讨论:我身边的IT认证
  11. 190617每日一句;我们可以普通,但我们必须拒绝平庸,别再去追随他人的脚步,开拓属于自己的道路
  12. PR快闪模板 高端黑白超级快闪图文展示开场PR视频模板
  13. Android MeasureSpec的理解和源码的解析
  14. 2018-2019-1 20165301 20165304 20165314 实验二 固件程序设计
  15. python读取excel画折线图_python读取excel数据绘制简单曲线图的完整步骤记录
  16. unity摄像机镜头平滑处理
  17. Win7快速启动栏设置及防止消失方法
  18. 阿里乾坤qiankun
  19. JetBrain补丁
  20. 快速入门:Excel中如何按照多个字段排序

热门文章

  1. Mysql 死锁问题
  2. css初始化代码,根据自己需要定义
  3. BGP项目实验案例(基于华为设备)
  4. 渗透测试DNS收集-DIG
  5. 测试排卵软件,排卵测试仪app
  6. 百度android代码命名规范
  7. FCK:editor解析
  8. 什么是存储过程,使用存储过程的好处?
  9. 冰冰B站第一个视频的弹幕大家都说了啥?Python爬取冰冰弹幕并分析
  10. CVPR 2022 | TransFusion:用Transformer进行3D目标检测的激光雷达-相机融合