【发布时间】:2021-12-01 07:19:34
【问题描述】:
如何使用 Lamdas 仅在 result.getExtendedAddress() 存在时添加条件?
原始状态:
.filter(result -> StringUtils.isNotBlank(title) && StringUtils.contains(result.getTitle().toLowerCase(), title.toLowerCase()))
新条件:
.filter(result -> StringUtils.isNotBlank(title) &&
(StringUtils.contains(result.getTitle().toLowerCase(), title.toLowerCase()) ||
((result.getExtendedAddress()!= null) && (StringUtils.contains(result.getExtendedAddress().toLowerCase(), title.toLowerCase()))))
这个新条件似乎过于复杂,我想知道是否有更好的方法来做到这一点?
【问题讨论】:
-
没有给出这个答案,因为我不知道
StringUtils足以确定它如何处理null输入,但我认为Optional.ofNullable(result.getExtendedAddress()).map(String::toLowerCase).orElse(null)应该可以工作。 -
假设您使用的是 Apache Common 的
StringUtils,您还可以使用StringUtils.containsIgnoreCase()来摆脱空检查:filter(StringUtils.containsIgnoreCase(result.getTitle(), title) || StringUtils.containsIgnoreCase(result.getExtendedAddress(), title))。 -
谢谢@Thomas。是的,我正在使用 org.apache.commons.lang3.StringUtils