我敢肯定,以前必须以不同的方式询问过这个问题-
因为isEmptyOrNull很常见,但人们以不同的方式实现它。但是我在最好的可用方法方面有以下好奇的查询,这对内存和性能都有好处。
1)下方不考虑所有空格,例如在XML标签为空的情况下
return inputString==null || inputString.length()==0;
2)低于一保重但修剪会降低性能和记忆力
return inputString==null || inputString.trim().length()==0;
3)将两者结合可以节省一些性能和内存(克里斯在评论中建议)
return inputString==null || inputString.trim().length()==0 || inputString.trim().length()==0;
4)转换为模式匹配器(仅在字符串长度不为零时调用)
private static final Pattern p = Pattern.compile("\\s+");
return inputString==null || inputString.length()==0 || p.matcher(inputString).matches();
5)是否使用诸如Apache
Commons(StringUtils.isBlank/isEmpty
)或Spring(StringUtils.isEmpty
)或Guava(Strings.isNullOrEmpty
)之类的库或其他任何选项?
还没有看到任何完全本地化的解决方案,所以这里是一个:
return str == null || str.chars().allMatch(Character::isWhitespace);
基本上,使用本机的Character.isWhitespace()函数。从那里,您可以实现不同程度的优化,具体取决于它的重要性(我可以向您保证,在99.99999%的用例中,不需要进一步的优化):
return str == null || str.length() == 0 || str.chars().allMatch(Character::isWhitespace);
或者,要使其达到最佳状态(但非常丑陋):
int len;
if (str == null || (len = str.length()) == 0) return true;
for (int i = 0; i < len; i++) {
if (!Character.isWhitespace(str.charAt(i))) return false;
}
return true;
我喜欢做的一件事:
Optional<String> notBlank(String s) {
return s == null || s.chars().allMatch(Character::isWhitepace))
? Optional.empty()
: Optional.of(s);
}
...
notBlank(myStr).orElse("some default")
问题内容: 我是Java新手。无法检查null。你能启发我吗?我有没有元素的字符串数组。 我尝试了这段代码 问题答案: 非常精确 会检查不是。并且将不为空[你也可以放弃该空格检查长度之前修剪。
问题内容: 我在Stream中有Google Guava: 如您所见,过滤器函数内部有一条语句。 我不想在项目中再使用番石榴,所以我只想替换为: 我怎样才能使它更优雅? 问题答案: 您可以编写自己的谓词: 然后,将其用作您的过滤器参数。
我一直在尝试使用Spring Cloud Contract(SCC)进行合同测试,现在尝试将Pact与SCC结合使用,作为使用纯Pact之前的中间步骤。 在我的消费者项目中,我指定了一个简单的合同: SCC验证程序所需的基类: SCC生成的测试: 运行测试会出现以下异常:
我用的是Spring boot Spring Security和Thymeleaf。目前,身份验证和授权工作良好时访问页面,但我不能使thymeleaf授权工作。流程非常简单:我尝试访问admin.html页面,对于该页面,我需要一个“admin”角色。Spring Security正确地截取了请求,首先将我转发到登录页面,当以管理员身份登录时,它允许我继续。 现在我想根据角色“隐藏”管理页面上的
问题内容: 是否可以通过SQL语句确保列的默认值为空字符串而不是? 问题答案: 是-使用DEFAULT约束:
我们使用ArrayList、hashmap等集合&更多。 另外有时候我们也需要检查列表是否为空,所以我们通常会通过以下几种方式进行检查 哪种情况是最好的,或者考虑到程序执行的性能,我们需要将这些情况进行一些组合吗?