removeIf() 方法,结合 Lambda 表达式
在 Java 8 中,removeIf()
方法是 Collection
接口新增的一个默认方法,用于根据条件批量删除集合中的元素。结合 Lambda 表达式,可以以极简的语法实现复杂的过滤逻辑。以下是详细说明:
1. 方法定义与语法
// java.util.Collection 接口中的定义
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;
}
- 参数:
Predicate<? super E> filter
一个返回布尔值的函数式接口,用于判断元素是否应被删除。 - 返回值:
boolean
如果至少删除了一个元素,返回true
;否则返回false
。
2. 使用 Lambda 表达式实现条件过滤
Lambda 表达式可以直接作为 Predicate
的实现,简化条件判断。