美文网首页Java干货
Java干货 - 遍历List集合进行过滤删除

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

作者: markchan | 来源:发表于2017-10-18 17:47 被阅读0次

在日常开发过程中, 我们往往需要对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--; // 遍历位于被移除元素之后的元素, 防止遍历过程中出现跳跃现象
        }
    }
}

相关文章

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

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

  • Java中的Iterable与Iterator详解

    在Java中,我们可以对List集合进行如下几种方式的遍历: List list =newArrayList<>(...

  • list集合遍历方式

    Java中List集合的三种遍历方式:①for循环遍历:指定下标长度,使用List集合的size()方法,进行fo...

  • 并发修改异常java.util.ConcurrentModifi

    1 问题描述 使用foreach或者Iterator遍历list等集合的时候,如果对集合进行了更改,如删除或者增加...

  • 快速失败(fail-fast)和安全失败(fail-safe)

    序言 我们有这种场景,比如对Java集合类进行遍历,但是在遍历过程中对集合进行修改(增加、删除、修改),这里会抛出...

  • 集合

    java集合接口有List,Set,Map。 List和Set都实现了Collection(对集合排序,遍历)接口...

  • foreach遍历list删除元素一定会报错?

    foreach遍历list集合删除某些元素一定会报错吗?先上一段代码: 控制台报错:java.util.Concu...

  • 迭代器模式

    java集合类遍历有个常见的问题就是想在Iterator里面去判断删除某个符合条件的元素的时候,如果使用List....

  • Kotlin之集合

    1、集合的创建与遍历 1.1、List集合的创建 在Java中常用的集合有ArrayList、LinkedList...

  • 对比Vector、ArrayList、LinkedList的区别

    三者都实现了集合框架中的List,也就是所谓的有序集合,都提供按照位置进行定位、添加或者删除操作,都提供迭代器遍历...

网友评论

    本文标题:Java干货 - 遍历List集合进行过滤删除

    本文链接:https://www.haomeiwen.com/subject/ewyeuxtx.html