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

1.使用迭代器删除(推荐)

 //使用迭代器删除元素List<String> list = new ArrayList<>();list.add("1");list.add("2");list.add("3");list.add("4");list.add("5");Iterator<String> iterator = list.iterator();while (iterator.hasNext()){String str = iterator.next();if(str.equals("2")){iterator.remove();}}System.out.println(list);

iterator.remove() 方法会在删除当前迭代对象的同时,会保留原来元素的索引,用迭代删除元素是最保险的方法。

2.删除元素后i-1

 //使用for循环删除元素List<String> list = new ArrayList<>();list.add("1");list.add("2");list.add("3");list.add("4");list.add("5");for (int i = 0; i < list.size(); i++) {String str = list.get(i);if(str.equals("2")){list.remove(i);i--;}}System.out.println(list);

删除一个元素后,后边的元素前移1位,i-1,下次循环能访问到前移1位的元素

3.反向删除

 //反向循环删除元素List<String> list = new ArrayList<>();list.add("1");list.add("2");list.add("3");list.add("4");list.add("5");for (int i = list.size() - 1; i >= 0 ; i--) {String str = list.get(i);if(str.equals("1")){list.remove(i);}}System.out.println(list);

这样,就算删除了倒数第一个元素,List重排,也只是把后边的元素左移1位,此时倒数第一个元素(下标为1)被删除,接着2替代了1成为了下标为1的元素,但前边的元素不变,i = 0 后依然能够找到其相邻的元素

4.赋值给新的List

 //赋值给新的ListList<String> list = new ArrayList<>();list.add("1");list.add("2");list.add("3");list.add("4");list.add("5");List<String> list2 = new ArrayList<>();for (int i = list.size() - 1; i >= 0 ; i--) {String str = list.get(i);if(!str.equals("2")){list2.add(str);}}System.out.println(list);System.out.println("新的List"+list2);

可以过滤掉不需要的元素后赋值给新的list对象

List中循环删除元素相关推荐

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

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

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

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

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

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

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

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

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

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

  6. Java 集合中遍历删除元素抛异常的原因,从ArrayList说起

    文章目录 使用for删除遗漏元素的原因: 使用foreach删除报错的原因: 其它集合的删除方法 删除集合元素的工具类 ArrayList删除元素的方式. 使用for循环删除.会遗漏删除的元素 使用f ...

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

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

  8. Java中List 删除元素方法參考

    Java中List 删除元素 Java中List 删除元素会使集合大小减少,合理删除的一些方法. 1:删除后的元素i-1 删除一个元素后,后边的元素左移1位,此时i-1,保证了下次循环能访问到左移了1 ...

  9. 算法 n个数字形成的圆圈中循环删除第m个数字 C++

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! //** ...

最新文章

  1. mac地址修改_快速更改WiFi MAC地址
  2. ArcGIS中标注之一上下标、分数等特殊形式标注(转)
  3. java httpinvoker漏洞_Java反序列化漏洞学习
  4. MySQL - MySQL不同存储引擎下索引的实现
  5. QT的QBufferDataGenerator类的使用
  6. 美图HTTPS优化探索与实践
  7. 对象间相互调用时互相控制的几种方法
  8. 区块链 FISCO BCOS网络端口讲解
  9. Java学习步骤及路线(超详细)
  10. 西门子PLC中各个组织块OB作用(OB1、OB100……)
  11. 在线模拟linux终端,linux下tty,控制台,虚拟终端,串口,console(控制台终端)详解...
  12. html5 required修改提示信息,required修改提示文字
  13. APP开发的需求分析
  14. html5打开抖音链接,抖音主页链接在哪里弄(主页链接设置教程)
  15. 【我的渲染技术进阶之旅】如何编译Filament的windows版本程序?
  16. 湖北智禾网店指导:新开卖家必须要了解的淘宝交易流程及交易规则。
  17. R语言double数据转成numeric类型
  18. mockjs详细介绍
  19. 春运购买火车票、乘车攻略
  20. java 线程ping pong_面试题。线程pingpong的输出问题

热门文章

  1. 信息流平台“三足鼎立”,看点、头条与百度如何拉锯?
  2. 饿了么、口碑实现超30亿美元独立融资,阿里、软银为投资方
  3. 表白神器——必须同意才能退出
  4. selenium打开多个不同用户的谷歌Chrome浏览器方法
  5. 淘宝Native研发模式的演进与思考 | DX研发模式
  6. js给textbox赋值,后台取值的问题
  7. 扫盲人工智能的计算力基石--异构计算
  8. 腾讯蓝鲸智云版本再迎新升级,正式推出容器化部署版本V7.0
  9. Linux战地日记——输入输出命令
  10. 适合程序员的耳机_程序员编程用什么耳机?