Как я могу использовать ИЛИ в фильтрах с Speedment

Как я могу использовать ИЛИ, если я хочу фильтровать потоки Speedment? Как написать поток с пользователями из Нью-Йорка, Нью-Джерси или PA?

users.stream()
    .filter(User.STATE.equals("NY"))
    .collect(Collectors.toList())

Это создает список пользователей только из Нью-Йорка...

1 ответ

Решение

В этом конкретном случае есть как минимум два пути: а) использовать Predicate::or б) использовать in сказуемое

Предикат:: или

users.stream()
    .filter(
        User.STATE.equals("NY")
        .or(User.STATE.equals("NJ"))
        .or(User.STATE.equals("PA"))
    )
    .collect(Collectors.toList());

в () Предикат

users.stream()
    .filter(User.STATE.in("NY", "NJ", "PA"))
    .collect(Collectors.toList());

Я бы использовал последнее решение, которое на мой взгляд выглядит лучше.

Другие вопросы по тегам