Как я могу использовать ИЛИ в фильтрах с 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());
Я бы использовал последнее решение, которое на мой взгляд выглядит лучше.