Java干货 - 遍历List集合进行过滤删除

在日常开发过程中, 我们往往需要对List集合进行遍历, 然后进行过滤操作, 将不需要或者非法的元素进行移除

常用的遍历方法有两种: foreach、Iterator
1. 使用 iterator 遍历然后进行过滤操作, 一切都木有问题, 直接上代码
public static void main(String[] args) {
    List<Integer> list = new ArrayList<>();

    for (int i = 0; i < 10; i++) {
        list.add(i);
    }

    Iterator<Integer> it = list.iterator();
    while (it.hasNext()) {
        if (it.next() == 5) { // 假设过滤掉值为5的元素
            it.remove();
        }
    }
}
2. 如果使用 foreach 遍历然后进行过滤操作, 如果对元素进行过滤, 则List集合的列表长度也随之递减, 由于初始的遍历长度是未进行操作前的List集合的长度, 所以对元素进行过滤操作的同时, 我们也需要对遍历的index进行递减, 否则继续遍历将会抛出OutOfIndexException异常
public static void main(String[] args) {
    List<Integer> list = new ArrayList<>();

    for (int i = 0; i < 10; i++) {
        list.add(i);
    }
    
    for (int i = 0, len = list.size(); i < len; i++) {
        if (list.get(i) == 5) { // 假设过滤掉值为5的元素
            list.remove(i);
            len--; // 始终遍历的是list的长度, 防止抛出OutOfIndexException异常
            i--; // 遍历位于被移除元素之后的元素, 防止遍历过程中出现跳跃现象
        }
    }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容