Java Collection.removeIf()

删除当前集合中符合给定断言的所有元素

初见版本

1.8

定义

default boolean removeIf(Predicate<? super E> filter)

参数

参数类型参数名称参数描述
Predicate<? super E>filter如果元素应该被删除则返回 true 的断言
类型变量UnsupportedOperationExceptionE集合的元素类型

返回值

如果有任意元素被删除则返回 true, 否则返回 false.

抛出的异常

NullPointerException 如果断言为 null

说明

实现要求:

默认实现使用 iterator() 遍历集合中的所有元素. 使用 Iterator.remove() 删除每个匹配的元素. 如果集合的迭代器不支持移除, 则应该在第一个匹配的元素上抛出 UnsupportedOperationException .

注意事项

在迭代期间或由断言引发的错误或运行时异常被传递给调用者

示例

使用条件删除集合元素的示例

package com.yi21.collection;

import java.util.ArrayList;
import java.util.Collection;
import java.util.List;

public class Yi21CollectionRemoveIf {

    public static void main(String[] args) {
        

        List<String> list = new ArrayList<>();
        list.addAll(List.of("Hello", "Wolrd", "21yi", "Why", "wHat", "when", "Who"));
        System.out.println("对象 list 是否是一个集合? " + (list instanceof Collection));

        System.out.println("不区分大小写, 删除以 wh 开头的元素是否成功? "
            + list.removeIf((t) -> {return t.toLowerCase().startsWith("wh");}));
        
        System.out.println("list 中剩余的元素: ");
        list.forEach(System.out::println);

    }

}

执行结果为 :

对象 list 是否是一个集合? true
不区分大小写, 删除以 wh 开头的元素是否成功? true
list 中剩余的元素:
Hello
Wolrd
21yi