资讯专栏INFORMATION COLUMN

Java中从list中删除符合条件的数据

SHERlocked93 / 3269人阅读

摘要:总结一下从中删除数据的一些方法使用,这个是和源码中经常使用到的一种方法,所以最为推荐倒序删除,以防因为删除中间项导致数据下标变更,使得数据出错顺序删除,但是对下标和索引进行了处理在遍历过程中不直接操作原

总结一下从list中删除数据的一些方法:
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

public class Main {

    public static void main(String[] args) {
        ArrayList strs = new ArrayList<>();
        strs.add("1");
        strs.add("32");
        strs.add("3");
        strs.add("4");
        strs.add("5");
        strs.add("36");

//        remove1(strs);
//        remove2(strs);
//        remove3(strs);
        remove4(strs);
        System.out.println("after");
        printList(strs);
    }

    //使用iterator,这个是java和Android源码中经常使用到的一种方法,所以最为推荐
    public static void remove1(List list) {
        Iterator sListIterator = list.iterator();
        while (sListIterator.hasNext()) {
            String str = sListIterator.next();
            if (str.contains("3")) {
                sListIterator.remove();
            }
        }
    }

    //倒序删除,以防因为删除中间项导致数据下标变更,使得数据出错
    public static void remove2(List list) {
        for (int i = list.size() - 1; i >= 0; i--) {
            if (list.get(i).contains("3")) {
                list.remove(i);
            }
        }
    }

    // 顺序删除,但是对下标和索引进行了处理
    public static void remove3(List list) {
        for (int i = 0, len = list.size(); i < len; i++) {
            if (list.get(i).contains("3")) {
                list.remove(i);
                len--;
                i--;
            }
        }
    }

    // 在遍历过程中不直接操作原list
    public static void remove4(List list) {
        List temp = new ArrayList<>();
        for (String str : list) {
            if (str.contains("3")) {
                temp.add(str);
            }
        }
        list.removeAll(temp);
    }

    public static void printList(List list) {
        for (String str : list) {
            System.out.println(str);
        }
    }
}

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/68307.html

相关文章

  • 遍历删除List元素方法

    摘要:通过进行遍历删除符合条件的多个元素使用的方式也可以顺利删除和遍历这里要使用的方法移除当前对象,如果使用的方法,则同样会出现 1.通过增强的for循环删除符合条件的多个元素 /** * 使用增强的for循环 * 在循环过程中从List中删除元素以后,继续循环List时会报ConcurrentModificationException */ public void l...

    tinna 评论0 收藏0
  • 1625行,解开 underscore.js 面纱 - 第五章

    摘要:对多个一维数组进行并运算,实际上就是加强版的。所以我要说的是这个函数,将传入参数转换为一个数组进行到的回调函数中,以此达到函数接到的是一个一维数组的集合。 每次小章节的开题都烦恼写什么好,所以直接接下文 (~o▔▽▔)~o o~(▔▽▔o~) 。 _.first = _.head = _.take = function(array, n, guard) { if (arra...

    Rango 评论0 收藏0
  • Java 集合 Collection、Iterator

    摘要:如果需要创建对象,则必须与一个被迭代的集合。这是一个有状态的方法该方法用于保证对该流的后续访问中最大允许访问的元素个数。可以对集合元素进行整体的聚集操作。 Java集合分为Set(无序、不可重复)、List(有序、重复)、Queue(队列)和Map(映射关系) Java集合概述 数组元素既可以是基本类型的值,也可以是对象(实际保存对象的引用变量)集合只能保存对象(实际保存对象的引用变量...

    harryhappy 评论0 收藏0
  • 你用过不写代码就能完成一个简单模块组件么?

    开篇四连问你是否懒得写普通的增删改查方法?你是否不喜欢代码生成插件的重复代码?你是否渴望一个没有冗余代码的项目?你是否渴望一行代码都不用写就能完成一个简单的模块?组件由来作为后端程序员,相信大家都写过以下几种代码: 根据主键查询多条件分页查询插入根据主键修改根据主键删除(单个或批量)抛开业务来说,这几种代码是我们项目中最最基本的代码了,每一个项目中都会出现大量的这种代码。那么你的项目中这种代码你是...

    PiscesYE 评论0 收藏0
  • Java013-集合

    摘要:集合框架重点理解用于存储数据的容器。集合容器在不断向上抽取过程中。出现了集合体系。,删除将集合中的元素全删除,清空集合。删除集合中指定的对象。注意删除成功,集合的长度会改变。作用用于取集合中的元素。是集合特有的迭代器。是单列集合是双列集合 集合框架(重点理解):用于存储数据的容器。特点:1:对象封装数据,对象多了也需要存储。集合用于存储对象。2:对象的个数确定可以使用数组,但是不确定怎...

    qpal 评论0 收藏0

发表评论

0条评论

SHERlocked93

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<