StringJoiner 基本使用
StringBuffer 拼接
StringBuilder sb = new StringBuilder();
sb.append("hello");
sb.append(",");
sb.append("world");
sb.append(",");
sb.append("Java程序员");
String str = sb.toString(); //输出: hello,world,Java程序员
System.out.println("str :" + str);
可以看到这里需要拼接多次"," 。
2. StringJoiner 拼接
StringJoiner sj = new StringJoiner(",");
sj.add("hello");
sj.add("world");
sj.add("Java程序员");
String str = sj.toString(); //输出: hello,world,Java程序员
System.out.println("str :" + str);
可以看到这里不需要拼接多次"," 。
StringJoiner 介绍
类结构图
成员变量
private final String prefix; //拼接后的字符串前缀
private final String delimiter; //拼接时的字符串分隔符
private final String suffix; //拼接后的字符串后缀
private StringBuilder value; /* StringBuilder存储,拼接后的值。 */
private String emptyValue; //空值的情况,value为 null 时返回
构造方法
两个构造方法,一个必须带分隔符,
另一个必须带分隔符、前缀、后缀,其中 emptyValue 默认为前缀+后缀组成。
公开方法
- setEmptyValue:设置空值
- toString:转换成 String
- add:添加字符串
- merge:从另一个 StringJoiner 合并
- length:长度(包括前缀后缀)
流式 API
add 方法源码
用 StringBuilder 进行封装的,首次创建会先拼接前缀,后续先添加分隔符,再添加字符串。
使用Demo
StringJoiner sj1 = new StringJoiner(",").add("hello").add("world").add("Java程序员");
System.out.println(sj1);
6.前后缀拼接
StringJoiner sj2 = new StringJoiner(",", "[", "]");
sj2.add("hello");
sj2.add("world");
sj2.add("Java程序员");
String str2 = sj2.toString();
7.空值处理
中间拼接null
// 如果add null,则会输出null,所以,如果add前需要判空
StringJoiner sj1 = new StringJoiner(",")
.add("hello")
.add(null)
.add("Java程序员");
System.out.println(sj1); //输出: hello,null,Java程序员
输出指定字符串
// 如果没有拼接的value,会输出emptyValue的值; 如果value有值 是不会输出emptyValue的值
StringJoiner sj0 = new StringJoiner(",", "[", "]");
sj0.setEmptyValue("没有值,设置默认空值!!!");
System.out.println(sj0.toString()); //输出: 没有值,设置默认空值!!!
StringJoiner sj1 = new StringJoiner(",")
.add("hello")
.add("Java程序员");
sj1.setEmptyValue("没有值,设置默认空值!!!");
System.out.println(sj1.toString()); //hello,Java程序员
String.join()
源码介绍
String针对 StringJoiner 又封装了一层的 API,可以传入动态参数或者迭代器。
使用示例
String sj1 = String.join(",", "hello", "Java程序员");
System.out.println(sj1); //输出: hello,Java程序员
List<String> strings = new LinkedList<>();
strings.add("Java");
strings.add("is");
strings.add("cool");
String message = String.join(" ", strings);
System.out.println(message); //输出: Java is cool
总结
开发人员可以根据需要选择合适的方式拼接。
参考: https://mp.weixin.qq.com/s/5Ehe_V_1sTy4QV7M-y-P0A