日韩性视频-久久久蜜桃-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,真香!的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 欧美精品一区二区三区久久 | 国内精久久久久久久久久人 | 一级特黄毛片 | 在线观看免费视频一区二区 | 久久99深爱久久99精品 | 五月婷婷综合激情 | 国产高清视频在线观看 | 男女午夜爽爽爽 | 毛片中文字幕 | 熟女高潮一区二区三区 | 亚洲社区一区二区 | 国产一级在线视频 | 一级做a爱片 | 神马国产 | 日韩av网站在线观看 | 欧美a在线播放 | 特级大胆西西4444人体 | 啪视频在线观看 | 麻豆日韩 | 成人免费毛片网 | 91久精品 | 网址在线观看你懂的 | 东方av在线播放 | 精品国产免费观看 | 麻豆影音先锋 | 日日摸日日碰夜夜爽av | 国产农村av | 国产精品久久久久久久久久辛辛 | 欧美日韩在线观看成人 | 少妇人妻综合久久中文字幕 | 女子spa高潮呻吟抽搐 | 国产永久在线观看 | 黄瓜视频在线免费看 | 综合久久久久久 | 国产网红无码精品视频 | 亚洲色图另类小说 | 久久久精品中文字幕 | 日本丰满少妇做爰爽爽 | 国模私拍av | 久久久久蜜桃 | 亚洲精品国产精品乱码不卡 | 亚洲123区| 不卡视频一区二区三区 | 九九欧美| 久久欧美 | 亚洲特黄视频 | 日本久久精品 | 爱吃波客今天最新视频 | 男女爽爽爽 | 四虎啪啪| 老局长的粗大高h | 小蝌蚪视频色 | 黑人一级 | 久草福利资源在线观看 | a级片免费观看 | 懂色av一区二区三区蜜臀 | 成年免费视频黄网站在线观看 | 日韩精品视频网站 | 国产日韩欧美不卡 | 欧美乱色 | 国模私拍一区二区三区 | 中日韩男男gay无套 人人草人人干 | 日本免费在线一区 | 帮我拍拍漫画全集免费观看 | 天天色综合影视 | 中文字幕码精品视频网站 | 黄色片视频免费在线观看 | 成人短视频在线播放 | 亚洲色图一区二区三区 | 日韩激情啪啪 | 国产区精品区 | 欧美一线高本道 | 国产中文字幕在线播放 | 亚洲成人午夜影院 | 少妇又紧又深又湿又爽视频 | 9久9久9久女女女九九九一九 | 最新日韩一区 | 久久国产一区二区三区 | 国产精品一区二区不卡 | 国产又粗又大又黄 | jizz中国少妇高潮出水 | 亚洲乱仑| 乱子伦一区二区三区 | 老司机深夜福利网站 | 国产欧美一区二区三区在线 | freesex性hd公交车上 | 天天插插 | 日韩无砖| 狠狠人妻久久久久久综合 | 一级免费毛片 | 国产成人午夜精品 | 好吊色综合| 欧美 唯美 清纯 偷拍 | 91导航 | 一区二区视频免费在线观看 | 人人操在线播放 | 国产裸体舞一区二区三区 | 爱操视频| 国产性精品 |