Java 仅当流不是空后缀时,自定义收集器才能在分隔符、后缀和前缀上加入流

Java 仅当流不是空后缀时,自定义收集器才能在分隔符、后缀和前缀上加入流,java,java-stream,collectors,Java,Java Stream,Collectors,我有一个字符串流: Stream= 我想使用 stream.collect(收集器.joining(',','[',']')) 只有当流不包含任何元素时,我才想返回“No Strings” 我注意到字符串java.util.stream.stream.collect(收集器老实说,我会使用您当前的方法(测试空性) 但如果您真的想使用直收集器,可以使用和作为制作自定义收集器的指南: Collector.of( () -> new StringJoiner(",", "[", "]")

我有一个字符串流:

Stream=

我想使用

stream.collect(收集器.joining(',','[',']'))

只有当流不包含任何元素时,我才想返回“No Strings”


我注意到
字符串java.util.stream.stream.collect(收集器老实说,我会使用您当前的方法(测试空性)

但如果您真的想使用直收集器,可以使用和作为制作自定义收集器的指南:

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

老实说,我同意你目前的方法(测试空虚感)

但如果您真的想使用直收集器,可以使用和作为制作自定义收集器的指南:

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

那么,从创建一个收集器开始并展示您迄今为止所做的工作如何?这甚至可以很好地进行单元测试!那么,从创建一个收集器开始并展示您迄今为止所做的工作如何?这甚至可以很好地进行单元测试!很好,这就是我所寻找的,因为不需要创建自定义收集器。您可以直接传递它y到并在末尾使用
toString()
stream.collect(()->new StringJoiner(“,”,“[”,“])。setEmptyValue(“无字符串”),StringJoiner::add,StringJoiner::merge)。toString()
@SamuelPhilipp适用于此用例或,但创建
收集器
允许与其他收集器组合,如
groupingBy
。最好的选择是创建一个类似于
收集器
中方法的工厂方法,即使用四个参数的
连接
。然后,可以使用或组合该方法和所有其他的一样。完美,这就是我想要的。这里不需要创建自定义收集器。您可以将它直接传递给并在末尾使用
toString()
stream.collect(()->new StringJoiner(“,”,“[”,“,”)。setEmptyValue(“无字符串”),StringJoiner::add,StringJoiner::merge)。toString()
@SamuelPhilipp适用于此用例或,但创建
收集器
允许与其他收集器组合,如
groupingBy
。最好的选择是创建一个类似于
收集器
中方法的工厂方法,即使用四个参数的
连接
。然后,可以使用或组合该方法我喜欢所有其他的。