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的remove()问题

java在分页查询结果中对最后的结果集List进行操作add()或remove()操作,报错:java.lang.UnsupportedOperationException

Android 安装包优化使用 lib7zr.so 动态库处理压缩文件 ( jni 中 main 函数声明 | 命令行处理 | jni 调用 lib7zr.so 函数库处理压缩文件完整代码 )(代码片

IOC 控制反转Android 事件依赖注入 ( 事件依赖注入具体的操作细节 | 创建 事件监听器 对应的 动态代理 | 动态代理的数据准备 | 创建调用处理程序 | 创建动态代理实例对象 )(代码片

list在遍历过程中的add/remove

debug底层java代码,对list中的数据去重的正确姿势,及对比java list remove正确使用方法与错误使用