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
。最好的选择是创建一个类似于收集器
中方法的工厂方法,即使用四个参数的连接
。然后,可以使用或组合该方法我喜欢所有其他的。