Google Guava isNullOrEmpty 对于集合

2023-12-28

我看到 Guava 有 isNullOrEmpty 字符串实用方法

Strings.isNullOrEmpty(str)

我们有类似的列表吗?就像是

Lists.isNullOrEmpty(list)

这应该相当于

list == null || list.isEmpty()

另外,我们有类似的数组吗?就像是

Arrays.isNullOrEmpty(arr)

这应该相当于

arr == null || arr.length == 0

不,这种方法在 Guava 中不存在,实际上在我们的“想法墓地”中。

我们不认为“是否为 null 或为空”是您真正想要询问集合的问题。

如果一个集合可能为 null,并且 null 应被视为与空相同,那么请预先消除所有歧义,如下所示:

Set<Foo> foos = NaughtyClass.getFoos();
if (foos == null) {
  foos = ImmutableSet.of();
}

或者像这样(如果你愿意的话):

Set<Foo> foos = MoreObjects.firstNonNull(
    NaughtyClass.getFoos(), ImmutableSet.<Foo>of());

之后,您可以使用.isEmpty()像平常一样。在调用顽皮的 API 后立即执行此操作,您就可以将奇怪的事情抛在脑后,而不是让它无限期地继续下去。

如果“null 真正意味着空集合”没有返回给您,而是传递给您,那么您的工作很简单:只需让NullPointerException被抛出,并让那个来电者恢复正常。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Google Guava isNullOrEmpty 对于集合 的相关文章

随机推荐

  • 为什么我收到 CS1012:“字符文字中的字符过多”和 CS0019?

    当尝试将某些内容上传到 Imgur 时 我必须输入授权 我使用WebRequest Headers但这给了我三个错误 2次CS1012错误 字符文字中的字符过多 和 1 次 CS0019 错误 运算符 不能应用于 char 和 method
  • C#源代码中使用特殊字符(例如“ñ”)是否错误?

    最近 使用 C 我刚刚使用拉丁字符声明了一个方法参数 我尝试构建 编译 我的整个解决方案并且它有效 因此我能够执行我的程序 但我很好奇是否在用C 编写的源代码中使用拉丁字符等特殊字符是错误的吗 如果错了 为什么 除此之外还有更多legibl
  • “ClassificationDataSet”中的“target”有什么用?

    我试图找出参数是什么target of ClassificationDataSet可以用来 但我还不清楚 我尝试过的 gt gt gt from pybrain datasets import ClassificationDataSet g
  • 简单的索引优化

    我最近参加了一个简单的技能测试 我得到了反馈 有一个小的索引优化可以改善 表现 技能测试涉及创建生日电子贺卡在线应用程序 用户注册 然后在他们生日那天向他们发送一封电子邮件 我假设这是在一台运行 mysql 数据库的 Linux 服务器上
  • 如何通过 CloudBees Jenkins“立即部署”功能部署非 Web Java 应用程序?

    CloudBees 现在支持 Java 应用程序的部署 是否可以使用 Jenkins 中的 部署到 CloudBees 中的构建后操作来部署您的应用程序 此外 我想使用 Maven程序集插件的 jar with dependations h
  • Google Data studio 中的 COUNTIFS 函数

    我有两列 分别称为大陆和完成度 我想根据以下数据计算每个大陆的完成百分比 这是在 Excel 中使用 COUNTIFS 函数定义的 我们可以在数据工作室中实现这一目标吗 完成百分比公式为 已关闭 状态总数 状态总数 状态值为 开放 进行中
  • 迭代时从映射中删除键/值

    我正在创建这样的地图 def myMap 映射基本上是一个键的对象和一个值的整数 当我迭代地图时 我会计算该值 如果它是 0 我会将其删除 我已经尝试过了myMap remove 但我得到了ConcurrentModificationErr
  • 未知文件类型 MIME?

    如果上传的文件没有扩展名 是否必须指定 MIME 类型 换句话说 是否有默认的通用 MIME 类型 您可以使用application octet stream对于未知类型 RFC 2046 http www rfc editor org r
  • 如何忽略带有特定注释的方法的 checkstyle javadoc 警告

    当我有一个没有 javadoc 的公共方法时 Checkstyle 会发出警告 这很好 当我重写公共方法时 我没有收到警告 因为 javadoc 已在该方法的父类中可用 例如 现在我的方法有另一个注释 MyEvent 现在我确实收到了警告
  • 根据两个数字之间的差异多次插入图像。 PHP

    编写一个脚本 计算从 API 检索到的日期之间的差异 我希望它在图像中放入与差异一样多的次数 d1 new DateTime 2012 04 04 d2 new DateTime 2012 03 31 interval d1 gt diff
  • 为什么 null 需要在这里进行显式类型转换? [复制]

    这个问题在这里已经有答案了 以下代码无法编译 int a int b int a 0 a null 为了编译 需要改为 int b a 0 a int null 既然两者b null and b a是合法的 这对我来说没有意义 为什么我们必
  • 在运行剩余的 javascript 之前检查有效的电子邮件

    我有一个文本框 要求用户在其中插入有效的电子邮件地址 当用户提交有效的电子邮件地址时 会在回发数据时出现加载图形 下面的代码可以很好地显示加载图形 但它不会首先检查电子邮件地址是否有效 有人可以帮忙吗 btnEmail1Submit liv
  • Ansible 查找模块不排除搜索中的文件夹

    这是我尝试找到的剧本test juli jar under app但是 我希望排除目录 app Patchbackup从搜索到的文件夹 以下是我的剧本 tasks name Find test home directories under
  • 实体框架查询很慢,但 SqlQuery 中的相同 SQL 很快

    我看到一些非常奇怪的性能 与使用 Entity Framework Code First 和 NET Framework 版本 4 的非常简单的查询相关 LINQ2Entities 查询如下所示 context MyTables Where
  • 在 Bison 中为 && 和 || 启动短路规则运营

    我正在使用 C C 在 Bison 和 Flex 中编写一个简单的计算器 逻辑在 Bison 中完成 C C 部分负责数据结构 例如 STL 等 我有以下问题 在我的计算器中美元符号 表示 i 和 i 前缀和后缀 例如 int y 3 gt
  • 导出 libGDX 小程序时 AppletLoader 的 ClassNotFound

    我尝试以下this http www thesecretpie com 2011 05 being like minecraft or how to run your html将我的 libGDX 游戏导出为 Java 小程序 该指南有点令
  • 用于手机号码验证的正则表达式

    我想要一个用于手机号码验证的正则表达式 正则表达式模式应该是这样的 它必须接受 仅在开头和空格 或 只应允许在国家 地区代码之后 仅一次 国家 地区代码后只能允许使用 10 位数字 国家 地区代码应该是可选的 如果国家代码不存在 则仅接受
  • 放大和有角度的安全关注 - Cognito

    我试图弄清楚 Cognito 是否需要放大才能与前端一起使用 或者是否有更安全的设置方法 我问的原因是因为我有一个解决方案 允许我使用 cognito amplify 和 Angular 登录我的应用程序 但为了使其正常工作 我必须将 us
  • 如何在android中以编程方式授予“绘制其他应用程序”权限?

    我如何以编程方式授予权限Settings gt Apps gt Draw over other apps在安卓中 我想使用系统警报窗口 但无法在 Android Marshmallow 中使用 除非强制用户先通过 设置 应用程序并授予权限
  • Google Guava isNullOrEmpty 对于集合

    我看到 Guava 有 isNullOrEmpty 字符串实用方法 Strings isNullOrEmpty str 我们有类似的列表吗 就像是 Lists isNullOrEmpty list 这应该相当于 list null list