gpt4 book ai didi

java - 仅当流后缀不为空时,自定义收集器才按分隔符、后缀和前缀加入流

转载 作者:行者123 更新时间:2023-12-01 17:45:03 28 4
gpt4 key购买 nike

我有一个字符串流:

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 的类界面。

我知道这可以通过流到列表然后检查 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

最佳答案

老实说,我会采用您当前的方法(测试空性)。

但是如果你真的想使用直接收集器,你可以使用 the source code of Collections.joiningthe Javadoc of StringJoiner作为制作自定义收集器的指南:

Collector.of(
() -> new StringJoiner(",", "[", "]").setEmptyValue("No strings"),
StringJoiner::add,
StringJoiner::merge,
StringJoiner::toString)

关于java - 仅当流后缀不为空时,自定义收集器才按分隔符、后缀和前缀加入流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56560842/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com