当前位置: 首页 > 知识库问答 >
问题:

处理“not”条件作为流操作中的方法引用[重复]

裘兴思
2023-03-14

我经常在流操作期间检查集合是否包含元素,我编写的代码如下所示:

Set<String> users = ...
Set<String> unemployed = ...

users.stream().filter(unemployedUsers::contains)
users.stream().filter(user -> !unemployedUsers.contains(user))

如果我能用这样的东西来代替它就太好了:

users.stream().filter(not(unemployedUsers::contains))

但我在standard lib中还没有找到允许这样做的API。

问:当我需要检查NOT条件时,如何用方法引用替换lambda表达式?或者有没有其他方法可以做同样的但更优雅的方式?

我可以这样编写自定义代码

Predicate<String> not(Predicate<String> predicate) {
    return predicate.negate();
}

并使用not(unemployeedusers::contains)构造,但可能有人用更好的方法解决了这个问题。

共有1个答案

万勇
2023-03-14

不是你想要的那么好。筛选器的参数是谓词谓词确实有negate()方法。但是为了使用它,您需要将参数强制转换为谓词

filter(((Predicate<String>) unemployedUsers::contains).negate())

你最好还是

filter(u -> !unemployedUsers.contains(u))
 类似资料:
  • 我的想法是,我有一个特定的操作序列,我想应用于其他操作之间的几个流。流之间的其他操作不相同。 例如,对于每个流,我要更改字符串的大小写,修剪它,将空字符串清空,然后过滤掉空字符串,最后,消除重复,如下所示: 在这两种情况下,我都执行以下操作序列: 我当前复制了该链并将其放在多个流的其他操作之间: 有没有一个好的方法来避免重写那段代码呢?很明显,这两个map()操作是可能的,但是这种操作组合有什么办

  • 本文向大家介绍PHP处理CSV表格文件的常用操作方法总结,包括了PHP处理CSV表格文件的常用操作方法总结的使用技巧和注意事项,需要的朋友参考一下 要做在线Excel表格编辑功能,Excel的xls文件格式的解析就是个问题,毕竟这是微软Office的私有专利格式. 所以要做的话还是用通用的csv(Comma Separated Value,逗号分隔值)格式吧. 各种办公软件都能识别csv表格,其实

  • 在批处理脚本中,可以使用任何编程语言执行普通的基于文件夹的操作。 以下是一些可以在文件夹上执行的操作。 创建文件夹 列出文件夹 遍历文件夹中的文件 删除文件夹 重命名文件夹

  • 通常,方法的声明显示其返回类型、方法完整路径和参数。但当我看方法我很困惑。 该方法似乎有两种返回类型: 我知道它真正的返回类型是

  • 我是Spark结构化流处理的新手,目前正在处理一个用例,其中结构化流应用程序将从Azure IoT中心-事件中心(例如每20秒)获取事件。 任务是使用这些事件并实时处理。为此,我在下面用Spark Java编写了Spark结构化流媒体程序。 以下是要点 目前我已经应用了10分钟间隔和5分钟滑动窗口的窗口操作。 水印被应用在以10分钟间隔的eventDate参数上。 目前,我没有执行任何其他操作,只

  • 本文向大家介绍基于easyui checkbox 的一些操作处理方法,包括了基于easyui checkbox 的一些操作处理方法的使用技巧和注意事项,需要的朋友参考一下 1、获取已勾选的行: var rows = $('#datagrid').datagrid('getChecked'); 2、判断checkbox是否全选: var allFlg = $(".datagrid-header-ch