List中循环删除元素
在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中循环删除元素相关推荐
- JAVA中循环删除list中元素的方法总结
原文:http://www.cnblogs.com/aspirant/p/7900854.html 印象中循环删除list中的元素使用for循环的方式是有问题的,但是可以使用增强的for循环,然后今天 ...
- java 删除list元素_JAVA中循环删除list中元素的方法总结
印象中循环删除list中的元素使用for循环的方式是有问题的,但是可以使用增强的for循环,然后今天在使用时发现报错了,然后去科普了一下,再然后发现这是一个误区.下面就来讲一讲..伸手党可直接跳至文末 ...
- JAVA中循环删除集合中元素的方法总结
一.list集合循环删除元素 1.通过普通的for删除删除符合条件的多个元素 for(int i=0;i<list.size();i++){if(list.get(i).equals(" ...
- java list 范围删除_JAVA中循环删除list中元素(移除list两时间范围外的元素)
印象中循环删除list中的元素使用for循环的方式是有问题的,但是可以使用增强的for循环,然后今天在使用时发现报错了,然后去科普了一下,再然后发现这是一个误区.下面就来讲一讲..伸手党可直接跳至文末 ...
- Java中循环删除list中元素的方法总结(总结)
印象中循环删除list中的元素使用for循环的方式是有问题的,但是可以使用增强的for循环,然后在今天使用的时候发现报错了,然后去科普了一下,发现这是一个误区.下面我们来一起看一下. Java中循环遍 ...
- Java 集合中遍历删除元素抛异常的原因,从ArrayList说起
文章目录 使用for删除遗漏元素的原因: 使用foreach删除报错的原因: 其它集合的删除方法 删除集合元素的工具类 ArrayList删除元素的方式. 使用for循环删除.会遗漏删除的元素 使用f ...
- List集合for循环删除元素(Java)
前言 首先说结论:无论什么场景,都不要对List使用for循环的同时,删除List集合元素,因为这么做就是不对的. 阿里开发手册也明确说明禁止使用foreach删除.增加List元素. 正确删除元素的 ...
- Java中List 删除元素方法參考
Java中List 删除元素 Java中List 删除元素会使集合大小减少,合理删除的一些方法. 1:删除后的元素i-1 删除一个元素后,后边的元素左移1位,此时i-1,保证了下次循环能访问到左移了1 ...
- 算法 n个数字形成的圆圈中循环删除第m个数字 C++
分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! //** ...
最新文章
- mac地址修改_快速更改WiFi MAC地址
- ArcGIS中标注之一上下标、分数等特殊形式标注(转)
- java httpinvoker漏洞_Java反序列化漏洞学习
- MySQL - MySQL不同存储引擎下索引的实现
- QT的QBufferDataGenerator类的使用
- 美图HTTPS优化探索与实践
- 对象间相互调用时互相控制的几种方法
- 区块链 FISCO BCOS网络端口讲解
- Java学习步骤及路线(超详细)
- 西门子PLC中各个组织块OB作用(OB1、OB100……)
- 在线模拟linux终端,linux下tty,控制台,虚拟终端,串口,console(控制台终端)详解...
- html5 required修改提示信息,required修改提示文字
- APP开发的需求分析
- html5打开抖音链接,抖音主页链接在哪里弄(主页链接设置教程)
- 【我的渲染技术进阶之旅】如何编译Filament的windows版本程序?
- 湖北智禾网店指导:新开卖家必须要了解的淘宝交易流程及交易规则。
- R语言double数据转成numeric类型
- mockjs详细介绍
- 春运购买火车票、乘车攻略
- java 线程ping pong_面试题。线程pingpong的输出问题