是否有一种更优雅的方式来连接流的元素,而不用“\ n”开头,而用“\ n”分隔每个元素,而不必像下面的示例中那样进行substring(1)调用?

    List<String> strings = someList;

    String rval = strings.stream()
            .map(this::someOperation)
            .reduce("", (p1, p2) -> p1 + "\n" + p2);

    if(rval.length() > 0)
    {
        // trim off the leading "\n"
        rval = rval.substring(1);
    }
    return rval;
}

当然我可以用内部循环替换它,但是那样会失去明显的功能可读性

最佳答案

有一些特定的收集器可以有效地处理字符串。如果您查看 Collectors.joining ,那么您会发现它确实是您想要的:

String joined = strings.stream()
    .map(this::someOperation)
    .collect(Collectors.joining("\n"));

07-25 23:58