jdk1.8之后,Collection中的removeIf()方法,可以对list和set 中符合条件的数据进行删除

Wesley13
• 阅读 522

以前我们对list中数据进行删除操作时基本都是使用迭代器,这种方式实现起来比较复杂,要写好几行代码才能做到,而且像我这种记性还经常忘记具体怎么写,还要百度, 最近发现一种非常简单的方式。就是Collection中的removeIf()方法。他是在jdk1.8后加入的。看下它的源码。

    default boolean removeIf(Predicate<? super E> filter) {
        Objects.requireNonNull(filter);
        boolean removed = false;
        final Iterator<E> each = iterator();
        while (each.hasNext()) {
            if (filter.test(each.next())) {
                each.remove();
                removed = true;
            }
        }
        return removed;
    }

内部也是使用迭代器实现的,还进行判空处理,很严谨的。

下面我们举个栗子,看他具体怎么使用。

    public static void main(String[] args) {
        List<String> listOf = new ArrayList<>();
        listOf.add("xiaoming");
        listOf.add("xiaohong");
        listOf.add("dazhou");

        listOf.removeIf(a -> a.indexOf("xiao") < 0);

        listOf.forEach( s -> System.out.println(s));
    }

这个例子是删除list中每个元素不包含“xiao”的元素,  然后打印出删除后的元素。

jdk1.8之后,Collection中的removeIf()方法,可以对list和set 中符合条件的数据进行删除

结果正是我们需要的。

使用这个方法,只需要一行代码就完成 了我们的需求,非常简单。

点赞
收藏
评论区
推荐文章
待兔 待兔
4个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
kenx kenx
3年前
Java 集合遍历与循环多种方式
前言Java中集合是非常常用非常重要的,应用是十分广泛的,作为集合这种数据结构,遍历循环方式也有很多种我们可以梳理总结不同的遍历方式,方便理解和运用List遍历方式1.List继承了Collection,是有序的列表。2.实现类有ArrayList、LinkedList、Vector、Stack等1.ArrayList是基于数组实现的,是
Bill78 Bill78
3年前
Python中的基本list操作
List是python中的基本数据结构之一,和Java中的ArrayList有些类似,支持动态的元素的增加。list还支持不同类型的元素在一个列表中,ListisanObject。最基本的创建一个列表的方法myList\'a','b','c'\在python中list也是对象,所以他也有方法和属性,在ptython解释器中使用h
Stella981 Stella981
3年前
Mybatis之foreach用法
在mybatis的xml文件中构建动态sql语句时,经常会用到标签遍历查询条件。特此记录下不同情况下书写方式!仅供大家参考1\.foreach元素的属性collection:需做foreach(遍历)的对象,作为入参时,list、array对象时,collection属性
Wesley13 Wesley13
3年前
Java深究之Vector、ArrayList、LinkedList的区别
       在java开发中除了上文经常用的对字符串的操作外,还有使用居多的当属集合了。在基础的java学习时,相信很多同学都学习了List、Set、Map这些,他们之间的区别和基本的使用方法也是很了解了,本文是详细的去分析List中Vector、ArrayList、LinkedList之间的区别和底层实现原理以及使用场景首先说下这三者的区别:
Wesley13 Wesley13
3年前
Java初始化List的五种方法
在Java中初始化List的五种方法Java中经常需要使用到List,下面简单介绍几种常见的初始化方式。方案一、构造List后使用List.add初始化。List<StringstringListnewLinkedList<();stringList.add("a");s
Stella981 Stella981
3年前
Python中的list详解
Python中内置的一种数据类型list,列表。list是一个有序集合,所谓有序集合就是可以通过Key或者Index进行访问(无序集合,集合的元素只能遍历,比如set)。list能随时随地进行增加和删除。python中list用\\进行表示。例如:\\\friends\'fanbinbin','libinbin','xijin
Stella981 Stella981
3年前
ArrayList源码解读(jdk1.8)
概要上一章,我们学习了Collection的架构。这一章开始,我们对Collection的具体实现类进行讲解;首先,讲解List,而List中ArrayList又最为常用。因此,本章我们讲解ArrayList。先对ArrayList有个整体认识,再学习它的源码,最后再通过例子来学习如何使用它。内容包括:第1部分ArrayList简
Wesley13 Wesley13
3年前
Java集合从菜鸟到大牛演变
先来看一张集合概况图,这里从上到下列举了几个最经常用的集合!(http://img.javastack.cn/1587459547246301.png)1、集合接口java.util.Collection是一个集合接口。它提供了对集合对象进行基本操作的通用接口方法。Collection接口在Java类库中有很多具体的实现。Coll
Wesley13 Wesley13
3年前
Java_Learn
20180417集合类Collection如果是实现了list接口的集合类,具备的特点是有序,可重复;如果是实现了set接口的集合类,具备的特点是无序,不可重复;Collection中的方法 增加 删除查看  add("添加任意类型的元素到集合中"); addall("添加一个集合的元素到另外一个集合中") clear("