在Java中,我有以下方法:
public String normalizeList(List<String> keys) {
// ...
}
我想检查一下
keys
:
null
本身;和size() == 0
);和String
为 null
的元素;和String
为空 ("") 的元素这是一个实用方法,将出现在“commons”风格的 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
语句内的列表,并检查那里是否有空值/空值,但我正在寻找更优雅的解决方案(如果存在)。
keys.contains(null) || keys.contains("")
如果您的列表有 null(或)空字符串,则不会抛出任何运行时异常和结果。
true
public String normalizeList(List<String> keys) {
boolean bad = keys.stream().anyMatch(s -> (s == null || s.equals("")));
if(bad) {
//... do whatever you want to do
}
}
和
keys.contains(null)
得到的唯一例外是 keys.contains("")
本身是 keys
。但是,既然您首先检查了这一点,您就知道此时
null
不是
keys
,因此不会发生运行时异常。
if(CollectionUtils.isEmpty(coll) || CollectionUtils.containsInstance(coll, null)) {
// throw ...;
}
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;
}
在此处查看 StringUtils 文档:https://commons.apache.org/proper/commons-lang/apidocs/org/apache/commons/lang3/StringUtils.html
if(StringUtils.isBlank(listItemString)){...}
所以要使用 Aniket 的评论来调整你原来的解决方案:
if( keys.stream().anyMatch(String::isBlank) ) { .... String::isBlank is since Java11. –
Aniket Sahrawat
Apr 6, 2019 at 2:30