日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

你只会用 StringBuilder?试试 StringJoiner,真香!

發布時間:2025/3/16 编程问答 16 豆豆
生活随笔 收集整理的這篇文章主要介紹了 你只会用 StringBuilder?试试 StringJoiner,真香! 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

你只會用 StringBuilder/ StringBuffer 拼接字符串?

那你就 OUT 了!!

如果需要拼接分隔符的字符串,建議使用 Java 8 中的這款拼接神器:StringJoiner,你值得擁有。

?

StringJoiner 基本使用

字面上理解就是用來拼接字符串的,一般需要分隔符進行拼接,如:

hello, guys, AAA

這種三段式由 "," 分隔的字符串,在 Java 8 之前要使用 StringBuilder/ StringBuffer 進行拼接,如:

StringBuilder?sb?=?new?StringBuilder(); sb.append("hello"); sb.append(","); sb.append("guys"); sb.append(","); sb.append("AAA"); String?str?=?sb.toString();

都是相同的分隔符逗號,這樣拼接顯然過于傻瓜式,如果要拼接的字符串非常多,代碼會十分難看,寫完感覺要崩潰。

然而 Java 8 之后有了 StringJoiner,這件事件就變得更簡單,分隔符這種全部一次性交給 StringJoiner 即可。

StringJoiner 基本使用示例:

public?static?void?main(String[]?args)?{StringJoiner?stringJoiner?=?new?StringJoiner(",");stringJoiner.add("hello");stringJoiner.add("guys");stringJoiner.add("AAA");System.out.println(stringJoiner.toString()); }

輸出:

hello,guys,AAA

可以看到,這樣寫十分的干凈清爽,也省去了許多沒有必要的分隔符拼接操作,代碼更優雅、只是可讀性沒 SB 直接拼接那么直觀。

StringJoiner 就這么簡單?

No!!!

StringJoiner 還有其他幾種用法,下面的篇幅棧長會帶大家解讀一下。

?

StringJoiner 詳細介紹

StringJoiner 的類結構圖:

它的父類就是 Object,這些成員變量和方法都有什么用呢?

成員變量:

  • prefix:拼接后的字符串前綴

  • delimiter:拼接時的字符串分隔符

  • suffix:拼接后的字符串后綴

  • value:拼接后的值

  • emptyValue:空值的情況,value為 null 時返回

構造方法:

提供了兩個構造方法,一個必須帶分隔符,另一個必須帶分隔符、前綴、后綴,可以看了 emptyValue 默認為前綴+后綴組成。

公開方法:

  • setEmptyValue:設置空值

  • toString:轉換成 String

  • add:添加字符串

  • merge:從另一個 StringJoiner 合并

  • length:長度(包括前綴后綴)

?

流式 API

我們重點看下 add 方法源碼:

可以看到內部其實就是用的 StringBuilder 進行封裝的,首次創建會先拼接前綴,后續先添加分隔符,再添加字符串。

其實 String 底層也是用的 StringBuilder

另外一點,add 方法就是返回 StringJoiner 本身,所以可以像 StringBuilder/ StringBuffer 一樣進行流式處理。

如上面的示例一行代碼搞定:

public?static?void?main(String[]?args)?{StringJoiner?stringJoiner?=?new?StringJoiner(",").add("hello").add("guys").add("AAA");System.out.println(stringJoiner.toString()); }


前后綴拼接

在示例中需要指定前后綴:

public?static?void?main(String[]?args)?{StringJoiner?stringJoiner?=?new?StringJoiner(",",?"[",?"]");stringJoiner.add("hello");stringJoiner.add("guys");stringJoiner.add("AAA");System.out.println(stringJoiner.toString()); }

輸出:

[hello,guys,AAA]

如上所示,前后都帶中括號進行了包裝。

?

空值處理

沒有拼接任何字符串的幾個空值處理場景。

輸出空白字符串:

public?static?void?main(String[]?args)?{StringJoiner?stringJoiner?=?new?StringJoiner(",");System.out.println(stringJoiner.toString()); }

輸出前后綴:

public?static?void?main(String[]?args)?{StringJoiner?stringJoiner?=?new?StringJoiner(",",?"[",?"]"); }

輸出:

[]

輸出指定字符串:

通過 setEmptyValue 進行設置。

public?static?void?main(String[]?args)?{StringJoiner?stringJoiner?=?new?StringJoiner(",",?"[",?"]");stringJoiner.setEmptyValue("void");System.out.println(stringJoiner.toString()); }

輸出:

void

?

String.join()

String.join() 這是針對 StringJoiner 又封裝了一層的 API,同樣出自 Java 8,可以傳入動態參數或者迭代器。

  • java.lang.String#join(java.lang.CharSequence, java.lang.CharSequence...)

  • java.lang.String#join(java.lang.CharSequence, java.lang.Iterable<? extends java.lang.CharSequence>)

源碼如下:

看源碼,這兩個方法只能進行簡單的拼接操作,不能添加前后綴、空值設置處理等。

來個示例:

public?static?void?main(String[]?args)?{String?str?=?String.join(",",?"hello",?"guys",?"AAA");System.out.println(str); }

可以看到,簡單處理這樣使用更簡便。

?

總結

今天介紹了 StringJoiner、StringBuilder、String.join() 之間的關系及使用。在使用拼間多個相同的分隔符時,使用 StringJoiner,簡單處理使用 String.join() 也能完成。

針對不同的場景使用不同的 API,這才是最佳最優雅的處理方式,不要只會使用 StringBuilder!

有道無術,術可成;有術無道,止于術

歡迎大家關注Java之道公眾號

好文章,我在看??

總結

以上是生活随笔為你收集整理的你只会用 StringBuilder?试试 StringJoiner,真香!的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 国产在线视频不卡 | 国产精品美女久久久久av超清 | 鲁在线视频 | 欧洲av在线播放 | 日韩九九九 | 四虎影院一区二区 | 国产无遮挡裸体免费视频 | 操伊人| 国产黄色录像 | 欧美美女视频 | aⅴ在线免费观看 | 日本少妇激三级做爰在线 | 五月激情开心网 | 丰满岳妇伦在线播放 | 韩日精品在线 | 日本不卡视频 | 男人插女人视频网站 | 日剧再来一次第十集 | 久久99久久99精品中文字幕 | 九久久久久 | 亚洲人视频在线观看 | 999资源站| mm131国产精品 | 亚洲黄色大全 | 欧美10p | 欧美精品一区在线观看 | 欧美日韩精品电影 | 女人久久久 | 91精品人妻一区二区三区果冻 | 深爱五月激情网 | 欧美视频自拍偷拍 | 国产 欧美 日韩 一区 | 国产性xxxx高清 | 欧美天天色| 亚洲一区在线观 | 色婷婷香蕉在线一区二区 | 高潮流白浆在线观看 | 18无套直看片红桃 | 最近国语视频在线观看免费播放 | 欧美在线播放 | 国产情侣小视频 | 亚洲成人午夜影院 | 97色在线观看 | 国模私拍视频在线 | 久久久久久国产精品三级玉女聊斋 | 色女人天堂 | 最新极品jizzhd欧美 | 开心色站 | 91精品久久久久久综合五月天 | 五月天在线播放 | 自拍偷拍亚洲区 | 涩涩资源站 | 日韩免费av| 综合激情视频 | 欧美 日韩 国产 一区 | 免费毛片网 | 日本色悠悠 | 精品免费在线 | 色玖玖综合 | 葵司ssni-879在线播放 | 激情五月激情综合 | 国产日韩一区二区三区 | 亚洲国产网址 | 欧美性猛交xxxx黑人猛交 | 911香蕉视频| 久久人妻一区二区 | 日本va视频 | 国产www视频 | 久久精品视频播放 | 丰满人妻综合一区二区三区 | 性猛交╳xxx乱大交 偷偷操不一样的久久 | 亚洲国产情侣 | 天天干天天舔天天射 | jizzz18 | 蜜臀aⅴ免费一区二区 | 日本理论中文字幕 | 伊人网成人网 | 伊人影视网 | 国产精品99久久久久久宅男 | 在线高清av | 亚洲大片| 免费人成又黄又爽又色 | 无码人妻精品一区二区三应用大全 | 综合久色| 国产高清自拍视频 | 天天看片天天干 | 这里只有精品在线观看 | 一区二区xxx | 97成人在线观看 | 逼特逼在线视频 | 免费萌白酱国产一区二区三区 | 精品人妻无码一区二区性色 | 中文字幕免费观看 | 91成人免费版 | 亚洲第三区| 国产精品久久久久久久久久 | 亚洲三级影视 | 久久久久99精品成人片直播 | 操你啦影院 |