java - 流连接结果默认值

标签 java

如果我通过流加入几个字符串,但没有任何东西可以加入,结果是一个空字符串,如“”。如果它为空,是否可以添加默认值?例如。 “-”

someList.stream()
                .filter(a -> a.getKey() != null)
                .map(a -> a.getKey())
                .sorted()
                .collect(Collectors.joining(", ")); 

更新: 我知道还有其他方法可以做到这一点,但我只是想知道是否可以覆盖默认值“”(空字符串)

最佳答案

String result = someList.stream()
        .filter(a -> a.getKey() != null)
        .map(a -> a.getKey())
        .sorted()
        .reduce((a,b) -> a + ", " + b).orElse("-");

我们使用 reduce 而不是 collect 的地方。

编辑:第一个解决方案确实没有按预期工作。这是。

关于java - 流连接结果默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43391209/

相关文章:

java - ArrayList<CustomClass> 中的 JSON 对象始终覆盖前一个对象。怎么解决?

java - 有开源的污染工具吗?

java - 数学公式未返回正确答案

java - 初始化 Hibernate 中代理的所有属性

java - 在 JUnit 中测试 REQUIRES_NEW

远程收集事实时 JAVA_HOME 不在 Ansible 环境中

java - 如何在java中使用newAPIHadoopRDD?

java - 将 TypedType[Set[MyObject]] 烫到 TypedType[MyObject]

java - 不同 Java 应用程序导出选项的奇怪行为

java - 使用 Facebook4j 进行 Facebook api 请求时失败