Хорошо, поэтому я хотел использовать Predicate.or (другое) вместо записи ||внутри предиката, но когда я использую с removeIf ArrayList, похоже, что выполняется только первая проверка, вот пример кода:
public static void main(String... args) {
List<String> leters = new ArrayList<>(Arrays.asList("A", "B", "C"));
Predicate<String> predicate = str -> str.equals("A");
predicate.or(str -> str.equals("B"));
predicate.or(str -> str.equals("C"));
leters.removeIf(predicate);
System.out.println(leters); // Prints B,C. I was acpecting to get an empty list
Predicate<String> predicate2 = str -> str.equals("A") || str.equals("B") || str.equals("C");
leters = new ArrayList<>(Arrays.asList("A", "B", "C"));
leters.removeIf(predicate2);
System.out.println(leters); // Prints []
}