我有一个字符串流:
Stream<String> stream = ...;
我想构造一个将这些项目连接起来,作为分隔符的字符串。我这样做如下:
stream.collect(Collectors.joining(","));
现在我只想在有多个项目时为这个输出添加一个前缀[和一个后缀]。例如:
a
[a,b]
[a,b,c]
这可以在不先实现Stream<String>to aList<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(",")) + "]";
}
首先将流转换为列表然后再次转换为流以便能够应用Collectors.joining(","). 我认为循环遍历整个流(在 a 期间完成Collectors.toList())只是为了发现是否存在一个或多个项目是次优的。
我可以实现我自己的Collector<String, String>,它计算给定项目的数量,然后使用该计数。但我想知道是否有更直接的方法。
当流为空时,这个问题有意忽略了这种情况。
慕村225694
ITMISS
相关分类