195. Building a dynamic predicate from a custom map of conditions
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;
  ...
}
    Also, let’s assume that we receive a Map of conditions of type field : value, which could be used to build a dynamic Predicate. An example of such a Map is listed here:
Map<String, String> filtersMap = Map.of(
  "brand", "Chevrolet",
  "fuel", "diesel"
);
    As you can see, we have a Map<String, String>, so we are interested in an equals() comparison. This is useful to start our development via the following Java enum (we follow the logic from Problem 194):
enum PredicateBuilder {
  EQUALS(String::equals);
  ...
    Of course, we can add more operators, such as startsWith(), endsWith(), contains(), and so on. Next, based on the experience gained in...