stringjoiner是java8新出的用于處理字符串拼接的工具類,可以讓你的代碼看起來更優雅,不拉跨。
假設現在遍歷一個字符串集合,需求是每個元素按照 “.” 分開。
1
2
3
4
5
6
7
|
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。
1
2
3
4
5
6
7
8
|
string result = "" ; for (string str : list) { result += str + "." ; } // 最后在處理掉最后一個 “.” 齊活兒,收工 system.err.println(result.substring( 0 , result.length() - 1 )); |
emm 有點丑,優雅點!
1
2
3
4
5
|
stringbuilder builder = new stringbuilder(); list.foreach(str -> builder.append(str).append( "." )); system.err.println(builder.tostring().substring( 0 , builder.length() - 1 )); |
上面的都不太方便,還要處理下結果,怪麻煩的,那能不能更優雅呢?能!上stringjoiner!
1
2
3
4
5
6
|
// 聲明stringjoiner, 每個元素通過 "." 分割 stringjoiner joiner = new stringjoiner( "." ); list.foreach(joiner::add); system.err.println(joiner.tostring()); |
達到了一樣的效果
那還有啥其他作用不?
1
2
3
4
5
|
// 每個元素通過 "." 分割,并且用 "[" 和 "]" 包住前后 stringjoiner joiner2 = new stringjoiner( "." , "[" , "]" ); list.foreach(joiner2::add); system.err.println(joiner2.tostring()); |
再比如
1
2
3
4
5
6
7
|
// 每個元素通過 "." 分割,并且用 "[" 和 "]" 包住前后 stringjoiner joiner2 = new stringjoiner( "." , "[" , "]" ); list.foreach(joiner2::add); // 將joner和joner2的元素合并,并且每個元素通過 "." 分割,并且用 "[" 和 "]" 包住前后 joiner2.merge(joiner); system.err.println(joiner2.tostring()); |
這還有個setemptyvalue,看方法名字是設置個空值?試一下,發現并沒啥效果,點進去瞅瞅。
1
2
3
4
5
6
|
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,沒想到具體有啥用
總結
到此這篇關于java8優雅的字符串拼接工具類stringjoiner的文章就介紹到這了,更多相關java8字符串拼接stringjoiner內容請搜索服務器之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持服務器之家!
原文鏈接:https://blog.csdn.net/weixin_38045214/article/details/114133678