是否有一种更优雅的方式来连接流的元素,而不用“ \ 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"));
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句