如何确定字符串列表是否包含 null 或空元素

新手上路,请多包涵

在 Java 中,我有以下方法:

 public String normalizeList(List<String> keys) {
    // ...
}

我想检查 keys

  • 不是 null 本身;和
  • 不为空( size() == 0 );和
  • 没有任何 String 元素是 null ;和
  • 没有任何 String 为空的元素 (“”)

这是一个实用程序方法,将进入“公共”风格的 JAR(该类类似于 DataUtils )。这是我所拥有的,但我认为它不正确:

 public String normalize(List<String> keys) {
    if(keys == null || keys.size() == 0 || keys.contains(null) || keys.contains(""))
        throw new IllegalArgumentException("Bad!");

    // Rest of method...
}

我相信对 keys.contains(null)keys.contains("") 的最后两次检查是不正确的,可能会引发运行时异常。 我知道我可以循环遍历 if 语句中的列表,并检查那里的空值/空值,但我正在寻找更优雅的解决方案(如果存在)。

原文由 IAmYourFaja 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 720
2 个回答
 keys.contains(null) || keys.contains("")

不会抛出任何运行时异常和结果 true 如果您的列表有 null(或)空字符串。

原文由 kosa 发布,翻译遵循 CC BY-SA 3.0 许可协议

This looks fine to me, the only exceptions you would get from keys.contains(null) and keys.contains("") would be if keys itself was null .

但是,由于您首先检查了这一点,因此您知道此时 keys 不是 null ,因此不会发生运行时异常。

原文由 NominSim 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题