Java 8 与流中的过滤器相反

标签 java java-8 java-stream

<分区>

你好我怎么能在 java 8 中做(我知道它已经在 java 11 中了)而不是为此过滤

filter(date -> date.isEqual(today) && repository.isDateExist(date))

我可以这样写

filter(date -> !date.isEqual(today) || !repository.isDateExist(date))

但是很难读

最佳答案

您可以使用 Predicatenegate() 方法,但这需要将 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/

相关文章:

java - 使用 Java8 将数组迭代转换为 lambda 函数

java - 如何根据谓词有效地将对象从一个 Java 集合传输到另一个集合?

java - Windows:使用 CMD(或 Java)从非特权运行特权命令

java - 当我们使用类实例调用静态方法/函数时会发生什么?

java - 从 Java 程序将数据插入数据库时​​出错

java - Collection.stream().forEach() 和 Collection.forEach() 有什么区别?

JavaFX 重复子饼图

Java8 将映射列表转换为字符串列表

java - 哪种 toArray 转换模式最适合使用?

java - 要映射的动态字符串列表