【发布时间】:2019-10-26 21:18:22
【问题描述】:
我有一个字符串流:
Stream<String> stream = ...;
我想创建一个字符串使用
stream.collect(Collectors.joining(',', '[', ']'))
如果流不包含任何元素,我只想返回“No Strings”。
我注意到String java.util.stream.Stream.collect(Collector<? super String, ?, String> collector)
方法采用 java.util.stream.Collector
对于我的项目,我在很多地方都需要这个功能,所以我需要一个实现Collector 接口的类。
我知道这可以通过 Stream to a List 然后检查 List.size() == 0 来完成?然后根据需要再次将列表转换为流。
List<String> list = stream.collect(Collectors.toList());
if (list.size() == 0) {
return "No Strings";
}
return list.stream().collect(Collectors.joining(",", "[", "]"));`
这就是我想要发生的事情
List emptyList<String> = new ArrayList<>; System.out.println(emptyList.stream().collect(Collectors.joining(",", "[", "]")));
输出
[]
我想要的输出
No Strings
【问题讨论】:
-
那么,从创建一个收集器开始并展示你迄今为止的努力如何?这甚至可以很好地进行单元测试!
标签: java java-stream collectors