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...