Java8中的字符串连接收集器
在JDK8中,可以采用函数式编程(使用 Collectors.joining 收集器
)的方式对字符串进行更优雅的连接。
Collectors.joining 收集器
支持灵活的参数配置,可以指定字符串连接时的 分隔符,前缀 和 后缀 字符串。
代码参考如下:
// 定义人名数组
final String[] names = {"Zebe", "Hebe", "Mary", "July", "David"};
Stream<String> stream1 = Stream.of(names);
Stream<String> stream2 = Stream.of(names);
Stream<String> stream3 = Stream.of(names);
// 拼接成 [x, y, z] 形式
String result1 = stream1.collect(Collectors.joining(", ", "[", "]"));
// 拼接成 x | y | z 形式
String result2 = stream2.collect(Collectors.joining(" | ", "", ""));
// 拼接成 x -> y -> z] 形式
String result3 = stream3.collect(Collectors.joining(" -> ", "", ""));
System.out.println(result1);
System.out.println(result2);
System.out.println(result3);
1234567891011121314
程序输出结果如下:
[Zebe, Hebe, Mary, July, David]
Zebe | Hebe | Mary | July | David
Zebe -> Hebe -> Mary -> July -> David
123
一般的做法(不推荐)
在JAVA8出现之前,我们通常使用循环的方式来拼接字符串,这样做不仅代码冗长丑陋,而且需要仔细阅读代码才知道代码的功能,例如下面的代码:
final String[] names = {"Zebe", "Hebe", "Mary", "July", "David"};
StringBuilder builder = new StringBuilder();
for (int i = 0; i < names.length; i++) {if (builder.length() > 1) {builder.append(",");}builder.append(names[i]);
}
System.out.println(builder.toString());
123456789
本文首发于个人独立博客,文章链接:http://www.zebe.me/java-8-string-join-collector