Если задача — проверить существование элемента по предикату, anyMatch можно заменить обычным циклом с ранним return. Для проверки конкретного значения в коллекции иногда достаточно contains.
Как ещё можно решить задачу без anyMatch?
Если задача — проверить существование элемента по предикату, anyMatch можно заменить обычным циклом с ранним return. Для проверки конкретного значения в коллекции иногда достаточно contains.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Если задача — проверить существование элемента по предикату, anyMatch можно заменить обычным циклом с ранним return. Для проверки конкретного значения в коллекции иногда достаточно contains.
Общий вариант без stream:
static <T> boolean exists(Iterable<T> items, Predicate<? super T> predicate) {
for (T item : items) {
if (predicate.test(item)) return true;
}
return false;
}
Пустая коллекция даёт false, а найденное совпадение прекращает обход. Входные items и predicate здесь предполагаются non-null. Самого исходного условия нет, поэтому конкретный предикат подставляется по задаче. Подсчёт всех совпадений обычно лишний, если нужен только факт наличия.