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

时间:2012-08-16 17:44:57

标签: java string collections

在Java中,我有以下方法:

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

我想查看keys

  • 不是null本身;和
  • 不为空(size() == 0);和
  • 没有Stringnull元素;和
  • 没有任何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("")的最后2次检查不正确,可能会抛出运行时异常。 我知道我可以循环遍历if语句中的列表,并在那里检查空值/空值,但我正在寻找更优雅的解决方案(如果存在)。

6 个答案:

答案 0 :(得分:31)

 keys.contains(null) || keys.contains("")

如果列表中有空(或)空字符串,则不会抛出任何运行时异常和结果true

答案 1 :(得分:5)

这对我来说很合适,keys.contains(null)keys.contains("")的唯一例外情况是keys本身是null

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

答案 2 :(得分:1)

你也可以使用Apache StringUtils并检查字符串isBlank,这将检查null,Emptystring并且还会修剪你的值。

if(StringUtils.isBlank(listItemString)){...}

Checkout StringUtils Docs here:

https://commons.apache.org/proper/commons-lang/apidocs/org/apache/commons/lang3/StringUtils.html

答案 3 :(得分:0)

我不确定但ApacheCommon库中没有任何帮助类可以做到这一点吗?比如你有一个字符串的isEmpty并且你在ApacheCommons库中有isNullOrEmpty

答案 4 :(得分:0)

一次检查列表

  public static boolean empty(String s) {
    if (s == null)
      return true;
    else if (s.length() == 0)
      return true;
    return false;
  }  

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

    // Rest of method...
    return null;
  }

答案 5 :(得分:0)

使用Java 8,您可以执行以下操作:

public String normalizeList(List<String> keys) {
    boolean bad = keys.stream().anyMatch(s -> (s == null || s.equals("")));
    if(bad) {
        //... do whatever you want to do
    }
}