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

原创
05/27 17:10
阅读数 347

以前我们对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”的元素,  然后打印出删除后的元素。

结果正是我们需要的。

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

展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部