List的普通for loop delete 连续元素有遗漏的解决
来源:互联网 发布:淘宝休闲运动服 编辑:程序博客网 时间:2024/06/09 20:17
如下的代码:
public class Test { public static void main (String[] args) { ArrayList<String> list = new ArrayList<> (); list.add ("a"); list.add ("b"); list.add ("b"); list.add ("c"); for (int i = 0; i < list.size (); i++) { if ("b".equals (list.get (i))) { list.remove (i); } } System.out.println (list); }}
结果为: a b c
而不是期望中的a c
原因:
因为在删除第一个"b"以后 ,List的size从4 变成了3.
原来list(2)位置上的第二个"b" 的位置变成了list(1). 现在i==1 然后i++ .i==2了 就跳过了对原来的list(2) 现在的list(1)的位置上的第二个"b"的检测,所以 第二个"b" 就没有被删除掉;
解决方法:
public class Test { public static void main (String[] args) { ArrayList<String> list = new ArrayList<> (); list.add ("a"); list.add ("b"); list.add ("b"); list.add ("c"); for (int i = 0; i < list.size (); i++) { if ("b".equals (list.get (i))) { list.remove (i--); //在remove一个元素后size--了 i也要-- } } System.out.println (list); }}
0 0
- List的普通for loop delete 连续元素有遗漏的解决
- python list删除元素时的遗漏问题
- Intellij IDEA中生成foreach或者loop或普通for的快捷键
- List 快速删除连续的多个元素
- 判断该list集合里面是否有连续的数字
- STL,list连续erase的一个危险及解决
- 普通for循环和增强for循环处理数组元素的一个差别
- Obj-C: (loop) 优雅的for...in loop
- list的sort和loop比较
- 遗漏的代码部分
- elastix 遗漏的NVFax
- 遗漏的PHP知识点
- notify 通知的遗漏
- python 中两个list是否有相同元素的办法
- python 中两个list是否有相同元素的办法?
- sh14.sh: 9: Syntax error: Bad for loop variable错误的解决
- 解决部分linux下不能shell脚本失效的解决办法 : not found Bad for loop variable
- List元素的几种for循环方式及其点评
- ubuntu下vpn服务器搭建
- libpcap详解
- flume学习(九):自定义拦截器
- STDIN_FILENO与STDIN的区别
- sqlserver中select造成死锁
- List的普通for loop delete 连续元素有遗漏的解决
- Android实时获取当前下载速度
- linux命令——scp 两台linux机器间文件或目录传输
- SCU2016-03 O题二分 + DLX可重复覆盖
- centos7下JDK安装
- morton codes
- 设计模式六大原则
- RabbitMQ(一): 详细介绍
- Intellij IDEA 使用技巧-- 快捷键