Learnitweb

BiPredicate interface in Java

BiPredicate is a functional interface introduced in JDK 8. This interface is provided in java.util.function package. BiPredicate operates on two arguments and returns a boolean based on a condition. It is a functional interface and thus can be used in lambda expression also.

BiPredicate is same as Predicate with the difference that it takes two arguments instead of one.

@FunctionalInterface
public interface BiPredicate<T, U> {
    boolean test(T t, U u);
}

Methods in BiPredicate interface

default BiPredicate<T,U> and(BiPredicate<? super T, ? super U> other)Returns a composed predicate that represents a short-circuiting logical AND of this predicate and other.
default BiPredicate<T,U> negate()Returns a predicate that represents the logical negation of this predicate.
default BiPredicate<T,U> or(BiPredicate<? super T, ? super U> other)Returns a composed predicate that represents a short-circuiting logical OR of this predicate and other.
boolean test(T t, U u)Evaluates this predicate on the given arguments.

BiPredicate Example 1

In this example, we’ll use BiPredicate to compare two strings.

import java.util.function.BiPredicate;

public class BiPredicateExample {
	public static void main(String[] args) {
		
		//BiPredicate to accept and compare two strings
		BiPredicate<String, String> bipredicate = (str1, str2) -> str1.equals(str2);
		
		//call test() method to compare two strings
		boolean result1 = bipredicate.test("hello", "world");
		boolean result2 = bipredicate.test("hello", "hello");
		
		//print result
		System.out.println("result1: "+ result1);
		System.out.println("result2: "+ result2);
	}
}

Output

result1: false
result2: true

BiPredicate Example 2

import java.util.function.BiPredicate;

public class BiPredicateExample {
	public static void main(String[] args) {
		BiPredicate<Long, Long> biPredicate1 = (x, y) -> x > y;
		BiPredicate<Long, Long> biPredicate2 = (x, y) -> x == y;

		//example of and() method
		System.out.println(biPredicate1.and(biPredicate2).test(9l, 8l));

		// example of or() method
		System.out.println(biPredicate1.or(biPredicate2).test(9l, 7l));

		// example of negate() method
		System.out.println(biPredicate1.negate().test(8l, 8l));
	}
}

Output

false
true
true