java 中list进行动态remove处理
Posted ordinary
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java 中list进行动态remove处理相关的知识,希望对你有一定的参考价值。
java中遍历 list遇到需要动态删除arraylist中的一些元素 的情况
错误的方式
for(int i = 0, len = list.size(); i < len; i++){ if(list.get(i) == 1) { list.remove(i); } }
这样会抛出异常
Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 3, Size: 3
at java.util.ArrayList.RangeCheck(Unknown Source)
at java.util.ArrayList.get(Unknown Source
这个异常是因为删除元素之后未改变相应角标,遍历到最后一个 的时候 就会找不到抛出 这个异常
正确做法删除下标以及定位到遍历位置
for(int i = 0, len = list.size(); i < len; i++){ if(list.get(i) == 1){ list.remove(i); len--; i--; } }
或者使用Java的Iterator接口来实现遍历
Iterator<Integer> iterator = list.iterator(); while(iterator.hasNext()){ int i = iterator.next(); if(i == 1){ iterator.remove(); } }
以上是关于java 中list进行动态remove处理的主要内容,如果未能解决你的问题,请参考以下文章
java在分页查询结果中对最后的结果集List进行操作add()或remove()操作,报错:java.lang.UnsupportedOperationException
Android 安装包优化使用 lib7zr.so 动态库处理压缩文件 ( jni 中 main 函数声明 | 命令行处理 | jni 调用 lib7zr.so 函数库处理压缩文件完整代码 )(代码片
IOC 控制反转Android 事件依赖注入 ( 事件依赖注入具体的操作细节 | 创建 事件监听器 对应的 动态代理 | 动态代理的数据准备 | 创建调用处理程序 | 创建动态代理实例对象 )(代码片
debug底层java代码,对list中的数据去重的正确姿势,及对比java list remove正确使用方法与错误使用