Java8優(yōu)雅的字符串拼接工具類StringJoiner實例代碼
StringJoiner是Java8新出的用于處理字符串拼接的工具類,可以讓你的代碼看起來更優(yōu)雅,不拉跨。
假設(shè)現(xiàn)在遍歷一個字符串集合,需求是每個元素按照 “.” 分開。
String a = "w", b = "d", c = "n", d = "m", e = "d"; List<String> list = new ArrayList<>(); list.add(a); list.add(b); list.add(c); list.add(d); list.add(e);
最原始的做法,拼接就完了,eazy。
String result = "";
for (String str : list) {
result += str + ".";
}
// 最后在處理掉最后一個 “.” 齊活兒,收工
System.err.println(result.substring(0, result.length() - 1));
emm 有點丑,優(yōu)雅點!
StringBuilder builder = new StringBuilder();
list.forEach(str -> builder.append(str).append("."));
System.err.println(builder.toString().substring(0, builder.length() - 1));
上面的都不太方便,還要處理下結(jié)果,怪麻煩的,那能不能更優(yōu)雅呢?能!上StringJoiner!
// 聲明StringJoiner, 每個元素通過 "." 分割
StringJoiner joiner = new StringJoiner(".");
list.forEach(joiner::add);
System.err.println(joiner.toString());
達到了一樣的效果

那還有啥其他作用不?
// 每個元素通過 "." 分割,并且用 "[" 和 "]" 包住前后
StringJoiner joiner2 = new StringJoiner(".", "[", "]");
list.forEach(joiner2::add);
System.err.println(joiner2.toString());

再比如
// 每個元素通過 "." 分割,并且用 "[" 和 "]" 包住前后
StringJoiner joiner2 = new StringJoiner(".", "[", "]");
list.forEach(joiner2::add);
// 將joner和joner2的元素合并,并且每個元素通過 "." 分割,并且用 "[" 和 "]" 包住前后
joiner2.merge(joiner);
System.err.println(joiner2.toString());

這還有個setEmptyValue,看方法名字是設(shè)置個空值?試一下,發(fā)現(xiàn)并沒啥效果,點進去瞅瞅。
StringJoiner joiner = new StringJoiner(".");
list.forEach(joiner::add);
System.err.println(joiner.toString());
joiner.setEmptyValue("abc");
System.err.println(joiner.toString());



奧,意思是如果啥都沒有的時候就在toString和length返回這個emptyValue的值/長度唄,emm,沒想到具體有啥用 🙃
總結(jié)
到此這篇關(guān)于Java8優(yōu)雅的字符串拼接工具類StringJoiner的文章就介紹到這了,更多相關(guān)Java8字符串拼接StringJoiner內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
詳解Java集合類之HashTable,Properties篇
這篇文章主要為大家詳細介紹一下Java集合類中HashTable和Properties的用法,文中的示例代碼講解詳細,對我們學(xué)習(xí)Java有一定幫助,感興趣的可以了解一下2022-07-07
基于Freemarker和xml實現(xiàn)Java導(dǎo)出word
這篇文章主要介紹了基于Freemarker和xml實現(xiàn)Java導(dǎo)出word,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-04-04
IDEA2020.2創(chuàng)建springboot項目卡死在reading maven project的問題
這篇文章主要介紹了關(guān)于2020.2IDEA用spring Initializr創(chuàng)建maven的springboot項目卡死在reading maven project的問題描述及解決方法,感興趣的朋友跟隨小編一起看看吧2020-09-09
Java Swing組件實現(xiàn)進度監(jiān)視功能示例
這篇文章主要介紹了Java Swing組件實現(xiàn)進度監(jiān)視功能,結(jié)合完整實例形式詳細分析了Java基于Swing組件實現(xiàn)進度條顯示功能的具體操作技巧與相關(guān)注意事項,需要的朋友可以參考下2018-02-02
使用JDBC連接Mysql 8.0.11出現(xiàn)了各種錯誤的解決
這篇文章主要介紹了使用JDBC連接Mysql 8.0.11出現(xiàn)了各種錯誤的解決,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-08-08

