以函数式方式重写嵌套的三元运算符
Rewrite nested ternary operators in functional way
我有如下一段代码:
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(joining("<br>"));
您可能会或可能不会觉得更简单。
Stream.of(firstString, secondString)
.filter(StringUtils::isNotBlank)
.collect(Collectors.joining("<br>"))
Collectors.joining
只会在有 2 个或更多元素时插入分隔符。在你的情况下,那是两者都非空的时候。
如果两者都为空,则结果为""
如果first为空,则结果为"second"
如果第二个为空,则结果为"first"
如果两者都不为空,则结果为"first<br>second"
我有如下一段代码:
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(joining("<br>"));
您可能会或可能不会觉得更简单。
Stream.of(firstString, secondString)
.filter(StringUtils::isNotBlank)
.collect(Collectors.joining("<br>"))
Collectors.joining
只会在有 2 个或更多元素时插入分隔符。在你的情况下,那是两者都非空的时候。
如果两者都为空,则结果为""
如果first为空,则结果为"second"
如果第二个为空,则结果为"first"
如果两者都不为空,则结果为"first<br>second"