@Test
public void test1111() {
Predicate<Payment> idIs1 = payment -> "1".equals(payment.getId());
Predicate<Payment> amountIsMoreThen30 = payment -> payment.getAmount() > 30L;
Predicate<Payment> amountRestIs1 = payment -> (payment.getAmount() % 10L) == 1;
Stream.of(
new Payment("1", 31),
new Payment("1", 40)
)
.filter(idIs1.or(amountIsMoreThen30).and(amountRestIs1))
.forEach(System.out::println);
}
@Data
@AllArgsConstructor
class Payment {
String id;
long amount;
}