メソッド参照述語を否定する方法 質問する

メソッド参照述語を否定する方法 質問する

Java 8 では、メソッド参照を使用してストリームをフィルタリングできます。次に例を示します。

Stream<String> s = ...;
long emptyStrings = s.filter(String::isEmpty).count();

既存のメソッド参照を否定するメソッド参照を作成する方法はありますか? つまり、次のようなものです:

long nonEmptyStrings = s.filter(not(String::isEmpty)).count();

以下のようなメソッドを作成することはできますnotが、JDK が同様のものを提供しているかどうか疑問に思っていました。

static <T> Predicate<T> not(Predicate<T> p) { return o -> !p.test(o); }

ベストアンサー1

Predicate.not( … )

新しい方法を提案する述語#not

したがって、メソッド参照を否定することができます。

Stream<String> s = ...;
long nonEmptyStrings = s.filter(Predicate.not(String::isEmpty)).count();

おすすめ記事