当前位置: 首页 > 面试题库 >

筛选流中的空项目

党宇定
2023-03-14
问题内容

使用Java Stream时,映射后有时会出现空值。当前,当这些值需要省略时,我使用:

.stream()
.<other operations...>
.filter(element -> element != null)
.<other operations...>

对于更实用的样式,可以快速编写一个小的辅助方法:

public static <T> boolean nonNull(T entity) {
    return entity != null;
}

这样您就可以使用方法引用了:

.stream()
.<other operations...>
.filter(Elements::nonNull)
.<other operations...>

我找不到这样的jdk方法,即使我怀疑它们中已经包含了一种。这里有其他方法吗?还是他们出于某种原因忽略了这一点?


问题答案:

您可以从Java8 SDK 使用Objects ::
nonNull

.stream()
.<other operations...>
.filter(Objects::nonNull)
.<other operations...>


 类似资料:
  • 假设一个类MyClass: 这条流: 我想返回中包含条目的的每个实例。 如果我想要一份清单 但我真正需要的是一个列表 这就是我现在拥有的: 但不知怎的,这感觉不太对。除了在谓词中打开一个新的流之外,还有什么更清洁的解决方案吗?

  • 有什么快速的方法可以过滤列表并获得值的索引吗? 我想拿到我找到的东西的索引?

  • 我在lexer语法文件中编写并用antlr4编译它。上面说 看来“filter”只适用于ANTLR3 我查了wikihttp://www.antlr.org/wiki/display/antlr4/options,没有找到答案。“filter”关键字也不在源文件https://github.com/antlr/antlr4/blob/master/tool/src/org/antlr/v4/too

  • 我希望,如果我选择“mammals”,动物选择选项只显示值为1的选项data-animal_class。 我知道如何获得哺乳动物值,但我不知道如何使用过滤器 这是我的代码:

  • 我需要过滤一个列表

  • 我有一个弹性搜索查询,可以使用multi_match和range过滤器,但我无法找到添加术语过滤器的正确语法。 我使用的是elasticsearch版本7.1.0。 以下是有效的查询: 这将从我的索引中返回所有与“核能”短语匹配的文档,这些文档的发布日期在2019-07-02-16:26之后。 我现在希望能够过滤查询,以便它只返回某种类型的结果。索引中有一个名为object_type的字段,用于存