193. Using BiPredicate
Let’s consider the Car model and a List<Car> denoted as cars:
public class Car {
private final String brand;
private final String fuel;
private final int horsepower;
...
}
Our goal is to see if the following Car is contained in cars:
Car car = new Car("Ford", "electric", 80);
We know that the List API exposes a method named contains(Object o). This method returns true if the given Object is present in the given List. So, we can easily write a Predicate, as follows:
Predicate<Car> predicate = cars::contains;
Next, we call the test() method, and we should get the expected result:
System.out.println(predicate.test(car)); // true
We can obtain the same result in a stream pipeline via filter(), anyMatch(), and so on. Here is via anyMatch():
System.out.println(
cars.stream().anyMatch(p -> p.equals(car))
);
Alternatively, we can rely on BiPredicate. This is a functional...