Streams 入门

用 Predicate.not() 进行否定

使用 Predicate.not() 简洁地否定方法引用,而非编写 lambda 包装器。

✕ Java 8
List<String> nonEmpty = list.stream()
    .filter(s -> !s.isBlank())
    .collect(Collectors.toList());
✓ Java 11+
List<String> nonEmpty = list.stream()
    .filter(Predicate.not(String::isBlank))
    .toList();
发现此代码有问题? 告诉我们。
👁

更简洁的否定

无需仅为否定而将方法引用包装在 lambda 中。

📖

可读性强

Predicate.not(String::isBlank) 清晰地表达意图。

🔗

可组合

与其他 Predicate 方法如 and()、or() 配合使用。

旧方式
Lambda 否定
现代方式
Predicate.not()
自 JDK
11
难度
入门
用 Predicate.not() 进行否定
可用

自 JDK 11 起可用(2018 年 9 月)。

Java 11 之前,否定方法引用需要将其包装在 lambda 中。Predicate.not() 允许直接否定方法引用,保持代码简洁。

分享 𝕏 🦋 in