talosのプログラミング教室

Java Silver合格への道 ~Predicateインタフェース~

スポンサーリンク

こんにちは。たろすです。

今回はPredicateインタフェースについてです。

Function、Consumer、SupplierはJava Silverの試験範囲に含まれていないので扱いません。

関数型インタフェースについて

Predicateインタフェースはあらかじめ用意された関数型インタフェースの一つです。

関数型インタフェースについては以下の記事で説明しています。

https://talosta.hatenablog.com/entry/js-lambdatalosta.hatenablog.com

使い方

boolean test(T t)

test()は引数を受け取ってboolean型を返すメソッドです。

import java.util.function.Predicate;

public class Main {

	public static void main(String[] args) {
		// TODO 自動生成されたメソッド・スタブ

		Predicate<String> p = str -> str.equals("a");
		if (p.test("a")) {
			System.out.println("YES");
		} else {
			System.out.println("NO");
		}
	}
}

default Predicate and(Predicate other)

二つのPredicate論理積です。

import java.util.function.Predicate;

public class Main {

	public static void main(String[] args) {
		// TODO 自動生成されたメソッド・スタブ

		Predicate<String> p1 = str -> str.contains("a");
		Predicate<String> p2 = str -> str.contains("b");
		Predicate<String> p = p1.and(p2);
		if (p.test("abc")) {
			System.out.println("YES");
		} else {
			System.out.println("NO");
		}
	}
}

default Predicate negate()

Predicateの論理否定です。

import java.util.function.Predicate;

public class Main {

	public static void main(String[] args) {
		// TODO 自動生成されたメソッド・スタブ

		Predicate<String> p = str -> str.equals("a");
		Predicate<String> _p = p.negate();
		if (_p.test("a")) {
			System.out.println("YES");
		} else {
			System.out.println("NO");
		}
	}
}

default Predicate or(Predicate other)

二つのPredicateの論理和です。

import java.util.function.Predicate;

public class Main {

	public static void main(String[] args) {
		// TODO 自動生成されたメソッド・スタブ

		Predicate<String> p1 = str -> str.contains("a");
		Predicate<String> p2 = str -> str.contains("b");
		Predicate<String> p = p1.or(p2);
		if (p.test("az")) {
			System.out.println("YES");
		} else {
			System.out.println("NO");
		}
	}
}

static Predicate isEqual(Object targetRef)

二つの引数が等しいかどうかを判定するメソッドです。

import java.util.function.Predicate;

public class Main {

	public static void main(String[] args) {
		// TODO 自動生成されたメソッド・スタブ

		Predicate<String> p = Predicate.isEqual("a");
		if (p.test("a")) {
			System.out.println("YES");
		} else {
			System.out.println("NO");
		}
	}
}

おわりに

今回はPredicateインタフェースについて説明しました。

難しいですが量は少ないのでしっかり覚えておきましょう。