Streams 初級

ラムダラッパーを書く代わりにPredicate.not()でメソッド参照をクリーンに否定する。

✕ 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();
このコードに問題がありますか? お知らせください。
👁

クリーンな否定

否定するためだけにメソッド参照をラムダでラップする必要がありません。

🔗

組み合わせ可能

任意のPredicateで動作し、クリーンな述語チェーンを実現します。

📖

自然に読める

Predicate.not(String::isBlank)は英語のように読めます。

旧来のアプローチ
ラムダによる否定
モダンなアプローチ
Predicate.not()
JDKバージョン
11
難易度
初級
Predicate.not()による否定
利用可能

JDK 11(2018年9月)以降、利用可能

Java 11以前は、メソッド参照を否定するためにラムダでラップする必要がありました。Predicate.not()を使えば任意の述語を直接否定でき、コードの可読性を保ちつつ、ストリームパイプライン全体でメソッド参照スタイルを一貫して使用できます。

共有 𝕏 🦋 in