<分区>
你好我怎么能在 java 8 中做(我知道它已经在 java 11 中了)而不是为此过滤
filter(date -> date.isEqual(today) && repository.isDateExist(date))
我可以这样写
filter(date -> !date.isEqual(today) || !repository.isDateExist(date))
但是很难读
<分区>
你好我怎么能在 java 8 中做(我知道它已经在 java 11 中了)而不是为此过滤
filter(date -> date.isEqual(today) && repository.isDateExist(date))
我可以这样写
filter(date -> !date.isEqual(today) || !repository.isDateExist(date))
但是很难读
最佳答案
您可以使用 Predicate
的 negate()
方法,但这需要将 lambda 表达式转换为 Predicate
类型。否则编译器无法推断类型。
filter(((Predicate<Date>)(date -> date.isEqual(today) && repository.isDateExist(date))).negate())
或者只是在取反之前将Predicate
赋值给一个变量:
Predicate<Date> pred = date -> date.isEqual(today) && repository.isDateExist(date);
filter(pred.negate())
关于Java 8 与流中的过滤器相反,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59264204/