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
