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

空安全集合作为Java 8中的流

阎功
2023-03-14
问题内容

我在寻找可以收集流的方法,但它是空安全的。如果collection为null,则返回空流。像这样:

Utils.nullSafeStream(collection).filter(...);

我创建了自己的方法:

public static <T> Stream<T> nullSafeStream(Collection<T> collection) {
    if (collection == null) {
        return Stream.empty();
    }
    return collection.stream();
}

但是我很好奇,标准的JDK中是否有类似的东西?


问题答案:

您可以使用org.apache.commons.collections4.CollectionUtils :: emptyIfNull函数:

  org.apache.commons.collections4.CollectionUtils.emptyIfNull(list).stream().filter(...);


 类似资料:
  • 问题内容: 我正在尝试使用JPA建立双向关系。我了解这是应用程序负责维护双方关系的责任。 例如,一个图书馆有多本书。在图书馆实体中,我有: 图书实体为: 不幸的是,OneToMany端的集合为空。因此,例如,对setLibrary()的调用失败,因为this.library.getBooks()。contains(this)导致NullPointerException。 这是正常行为吗?我应该自己

  • 我的云Firestore数据库中有以下规则: 这个想法是,如果你拥有一个性能,你可以读写它;如果你登录,你可以创建一个性能。 此查询工作正常: 但是,如果我想获取'场景'子集合的内容,我会收到一个错误:"com.google.firebase.firestore.FirebaseFirestoreException:PERMISSION_DENIED:缺少或权限不足。"这是与以下查询: 我假设我需

  • 本文向大家介绍哪些集合类是线程安全的?相关面试题,主要包含被问及哪些集合类是线程安全的?时的应答技巧和注意事项,需要的朋友参考一下 Vector、Hashtable、Stack 都是线程安全的,而像 HashMap 则是非线程安全的,不过在 JDK 1.5 之后随着 Java. util. concurrent 并发包的出现,它们也有了自己对应的线程安全类,比如 HashMap 对应的线程安全类就

  • 问题内容: 我希望将空结果集的总计设置为0。我尝试了以下方法: 结果: 子问题:上面的工作在Oracle中行不通吗? 问题答案: 在有关聚合函数的文档页面中: 应该注意的是,除了这些函数, 当没有选择任何行时 ,这些函数将 返回空值 。特别是,没有行返回空值,而不是预期的零值。必要时,该函数可用于将零替换为null。 所以,如果你想保证返回的值,适用于 结果 的,而不是它的参数: 至于Oracle

  • 在Java8中使用缺省方法作为穷人版本的traits是一种安全的做法吗? 有人说,如果你只是为了熊猫而使用它们,可能会让熊猫伤心,因为它很酷,但这不是我的本意。人们还经常提醒说,引入缺省方法是为了支持API演进和向后兼容性,这是真的,但这并不使使用它们作为特征本身是错误的或扭曲的。 我脑海中有以下实际用例: 或者,定义: 关于SO的几个问题与Java vs Scala特性有关;这不是重点。我也不仅

  • 问题内容: 我想验证集合是否为空和。任何人都可以让我知道最佳做法。 目前,我正在检查以下内容: 问题答案: 如果在项目中使用Apache Commons Collections 库,则可以使用和方法分别检查集合或映射是否为 空 或为 空 (即它们是“空安全的”)。 这些方法背后的代码或多或少是用户@icza在其答案中所写的内容。 无论您做什么,都请记住,随着代码复杂度的降低,编写的代码越少,测试的