【Java】Predicateを使用して判定するためのprivateメソッドを作成したい!Predicateの使い方を紹介!

PredicateはJavaで述語(条件)を表すためのインターフェースです
主にコレクションの要素に対するフィルタリングや条件に基づいた処理を行う際に使用されます

JavaのPredicateインターフェースには、以下の主なメソッドが用意されています

test(T t)

与えられた引数に対してこの述語を評価します

and(Predicate other)

この述語と他の述語の論理積を返します

or(Predicate other)

この述語と他の述語の論理和を返します

negate()

この述語の否定を返します


これらのメソッドを使うことで、Predicateインスタンスを組み合わせたり、否定したりすることができます
複雑な条件を簡潔に表現することができるのです

例を挙げてみます!

import java.util.function.Predicate;

public class Main {
    public static void main(String[] args) {
        String str = "example";

        // メソッド呼び出しでPredicateを使用
        boolean result = isLongString(str);

        System.out.println("Is the string long? " + result);
    }

    // Predicateを返すプライベートメソッド
    private static Predicate<String> createPredicate() {
        return input -> input.length() > 5;
    }

    // Predicateを使用する別のメソッド
    private static boolean isLongString(String input) {
        Predicate<String> predicate = createPredicate(); // ラムダ式でPredicateを生成
        return predicate.test(input);
    }
}

ここでは、createPredicateメソッドがラムダ式を使用してPredicateを返し、それをisLongStringメソッド内で利用しています

どんな流れかというと。。。

  1. mainメソッドが実行されます
    ここでは、文字列 “example” が変数 str に代入されます
  2. isLongString メソッドが呼び出されます
    このメソッドは引数として文字列を受け取り、その文字列が指定された長さよりも長いかどうかを判定します
  3. createPredicate メソッドが呼び出され、その結果として長さが5より大きいかどうかを判定するPredicateが返されます
  4. isLongString メソッドはcreatePredicate メソッドから返されたPredicateを取得し、引数として与えられた文字列に対してテストを実行します
    この場合、文字列 “example” の長さは 7 なので、true が返されます
  5. main メソッドはisLongString メソッドから返された結果を表示します
    したがって、出力は “Is the string long? true” となります

ちなみに、Predicateを返却しているprivateメソッドは一行で表現することができます

private static final Predicate<String> predicate = input -> input.length() > 5;

シンプル!

ぜひ活用ください!

是非フォローしてください

最新の情報をお伝えします