仅当存在多个项目时,才向 Collectors.joining() 添加前缀和后缀解释
我有一个字符串流:
Stream<String> stream = ...;
我想构造一个字符串,它将这些项目作为分隔符连接起来。我这样做如下:,
stream.collect(Collectors.joining(","));
现在,仅当有多个项目时,我才希望向此输出添加前缀和后缀。例如:[
]
a
[a,b]
[a,b,c]
这可以在不首先实现为a然后检查的情况下完成吗?在代码中:Stream<String>
List<String>
List.size() == 1
public String format(Stream<String> stream) {
List<String> list = stream.collect(Collectors.toList());
if (list.size() == 1) {
return list.get(0);
}
return "[" + list.stream().collect(Collectors.joining(",")) + "]";
}
首先将流转换为列表,然后再转换为流以便能够应用 .,这感觉很奇怪。我认为循环遍历整个流(在 a 期间完成)只是为了发现是否存在一个或多个项目是不理想的。Collectors.joining(",")
Collectors.toList()
我可以实现我自己的计数给定项目的数量,然后使用该计数。但我想知道是否有导演的方式。Collector<String, String>
这个问题故意忽略了流为空的情况。