以函数方式重写嵌套的三元运算符



我有以下代码:

String firstString = "sth";
String secondString = "sthElse";
String stringsSpecialConcat = String.format("%s<br>%s", firstString, secondString);
boolean isFirstStringNotBlank = StringUtils.isNotBlank(firstString);
boolean isSecondStringNotBlank = StringUtils.isNotBlank(secondString);
return isFirstStringNotBlank ? (isSecondStringNotBlank ? stringsSpecialConcat : firstString) : (isSecondStringNotBlank ? secondString : "")

你能帮我用函数式编程的方法简化上面的内容吗?

我想用类似的东西

Stream.of(firstString, secondString).collect(joining(""))
Stream.of(firstString, secondString)
.filter(StringUtils::isNotBlank)
.collect(Collectors.joining("<br>"))

如果存在2个或更多个元素,则Collectors.joining将仅插入分隔符。在您的情况下,这是当两者都不为空时。

如果两者都为空,则结果为""

如果第一个为空,则结果为"second"

如果第二个为空,则结果为"first"

如果两者都不为空,则结果为"first<br>second"

这个。。。其实还不错。你能做的最好的事情就是

Stream.of(firstString, secondString)
.filter(StringUtils::isNotBlank)
.collect(joining("<br>"));

这可能更简单,也可能不简单。

最新更新