List.remove()在for循环中出现问题的三个解决方法
2019-08-15 13:21
183 查看
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/u010813343/article/details/83211127
问题描述:
用下面的方法remove,将出现缺项问题
[code]List<Integer> list = new ArrayList<Integer>(); for(int i = 0; i < 10; i++) { list.add(i); } for(int i = 0; i < list.size(); i++) { System.out.print(list.get(i)); list.remove(i); }
结果出现02468,说明13579并没有被remove.
检验如下:
[code]for(int i = 0; i < list.size(); i++) { System.out.print(list.get(i)); }
将出现结果:13579
原因:List每remove掉一个元素以后,后面的元素都会向前移动,此时如果执行i=i+1,则刚刚移过来的元素没有被读取。
解决方法:
1)使用Iterator.remove()方法
[code] Iterator<Integer> it = list.iterator(); while(it.hasNext()) { System.out.print(it.next()); it.remove(); }
2)每移除一个元素以后再把i减1
[code]for(int i = 0; i < list.size(); i++) { System.out.print(list.get(i)); list.remove(i); i = i - 1; }
3)for循环倒序遍历
[code]for(int i = list.size() - 1; i >= 0; i--) { System.out.print(list.get(i)); list.remove(i); }
相关文章推荐
- python创建cocos2d-x出现list index out of range的问题解决方法
- android学习—— Android导入源代码出现Remove @Override问题解决方法
- 关于List.remove在for循环中出现问题的解决方案
- 关于List.remove在for循环中出现问题的解决方案
- 关于List.remove在for循环中出现问题的解决方案
- android学习—— Android导入源代码出现Remove @Override问题解决方法 .
- make menuconfig出现scripts/kconfig/lxdialog/checklist.o问题的解决方法
- List中循环添加Map集合时出现数据覆盖问题原因分析及解决方法
- 关于使用VS.Net2003调试器出现的问题及相关解决方法
- 某公司R2631E以太口通过SDH接新桥的ATM交换机,出现丢包问题的解决方法
- (word导出问题)解决:服务器出现意外情况。 (异常来自 HRESULT:0x80010105 (RPC_E_SERVERFAULT))的解决方法
- asp读sql数据时出现乱码问题的解决方法
- VS.NET2003调试出现的问题及相关解决方法
- Access超过三个表进行内连接、左连接或右连接时出现操作符丢失或form子句错误的解决方法
- petshop3.0汉化过程出现问题及解决方法
- SQL安装中常出现的问题与解决方法
- 整理ArcSDE 安装过程出现问题以及解决方法系列
- VMWARE内系统时间出现问题的解决方法一则
- windows 2003中安装net Framework 2.0 后Reporting Service 出现问题及其解决方法
- 关于ENU OS加CHS VS2008出现包加载失败问题解决方法存档