如果我通过流加入几个字符串,并且没有任何内容可以加入,那么结果是一个空字符串,如""。是否有可能在它为空时添加默认值?例如。 " - "
someList.stream()
.filter(a -> a.getKey() != null)
.map(a -> a.getKey())
.sorted()
.collect(Collectors.joining(", "));
更新: 我知道还有其他方法可以做到,但我只是想知道""的默认值。 (空字符串)可以覆盖
答案 0 :(得分:2)
String result = someList.stream()
.filter(a -> a.getKey() != null)
.map(a -> a.getKey())
.sorted()
.reduce((a,b) -> a + ", " + b).orElse("-");
我们使用reduce而不是collect。
编辑:第一种解决方案确实没有按预期工作。这个是。答案 1 :(得分:1)
为什么不添加像if (outString.isEmpty()) return "-";
在你的代码之后
String outString = someList.stream()
.filter(a -> a.getKey() != null)
.map(a -> a.getKey())
.sorted()
.collect(Collectors.joining(", "));
if (outString.isEmpty())
return "-";
else
return outString;