亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

您的位置:首頁技術文章
文章詳情頁

Java實用工具之StringJoiner詳解

瀏覽:6日期:2022-08-12 18:29:39
背景

在平時的業務開發中,我們可能會遇到字符串列表根據分隔符進行拼接的需求。比如:

輸入:

數組:[“a”,“b”,“c”]分隔符:','

輸出:

“a,b,c” 處理

通常我們可以使用StringBuilder根據下標位置決定是否需要添加分隔符以達到目的,比如:

public static void main(String[] args) {StringBuilder sb = new StringBuilder();String[] strings = new String[]{'a', 'b', 'c'};String delimiter = ',';for (int i = 0; i < strings.length; i++) { if (i != 0) {sb.append(delimiter); } sb.append(strings[i]);}System.out.println(sb.toString()); }

或者:

public static void main(String[] args) {StringBuilder sb = new StringBuilder();String[] strings = new String[]{'a', 'b', 'c'};String delimiter = ',';int tmp = strings.length - 1;for (int i = 0; i < strings.length; i++) { sb.append(strings[i]); if (i != tmp) {sb.append(delimiter); }}System.out.println(sb.toString()); }

但是每次遇到這種情況都去這樣拼接很麻煩,而且如果使用迭代器,沒有下標就不能使用這種方法。那么就每次append分隔符,最后再截斷:

public static void main(String[] args) {StringBuilder sb = new StringBuilder();String[] strings = new String[]{'a', 'b', 'c'};String delimiter = ',';for (String str:strings) { sb.append(str).append(delimiter);}System.out.println(sb.substring(0,sb.length()-1)); }

所以通常情況下,我們都會去擴展一個StringBuilder以提供分隔符組裝的功能,博主平時是這樣弄的:

public class MyStringBuilder { private StringBuilder stringBuilder; private String delimiter; public MyStringBuilder(String delimiter) {this.delimiter = delimiter; } public MyStringBuilder append(String item) {getStringBuilder().append(item);return this; } /** * 模擬的就是這個邏輯: * if(index != 0){ * append(delimiter); * } * append(str); * * @return */ private StringBuilder getStringBuilder() {if (stringBuilder == null) { //相當于index==0, stringBuilder = new StringBuilder();} else { stringBuilder.append(delimiter);}return stringBuilder; } @Override public String toString() {return stringBuilder == null ? '' : stringBuilder.toString(); }}

在初始化的時候指定分隔符,然后每次直接append就行了,由內部決定在何時添加分隔符。在JDK1.8之后,提供了一個StringJoiner類,提供了類似的功能,可以在初始化的時候指定分隔符和前綴后綴:

StringJoiner sj = new StringJoiner(',','(',')');sj.add('a').add('b').add('c');System.out.println(sj.toString());//輸出:(a,b,c)

博主大致看了一下StringJoiner的實現邏輯,很簡單,和咱們擴展StringBuilder基本是一樣的邏輯,另外加入了前綴后綴,然后多了一個merge的功能:

public StringJoiner merge(StringJoiner other) {Objects.requireNonNull(other);if (other.value != null) { final int length = other.value.length(); // lock the length so that we can seize the data to be appended // before initiate copying to avoid interference, especially when // merge ’this’ StringBuilder builder = prepareBuilder(); builder.append(other.value, other.prefix.length(), length);}return this; }

到此這篇關于Java實用工具之StringJoiner詳解的文章就介紹到這了,更多相關Java StringJoiner內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Java
相關文章:
主站蜘蛛池模板: 久久777国产线看是看精品 | 久久久久久网站 | 国产精品欧美激情在线播放 | 网站在线观看高清免费 | 国产精品91在线播放 | 久久精品国产免费看久久精品 | 久草视频福利在线 | 91精品国产视频 | 国产免费小视频在线观看 | 亚洲天堂三区 | 国产72av国片精品jk制服 | 青青草无限次破解版污 | 激情免费网站 | 自拍亚洲国产 | 国内精品51视频在线观看 | 亚洲综合涩 | 国产黑丝在线播放 | 香蕉久久精品国产 | 大尺度做爰视频吃奶www | 国产高清一区二区三区四区 | 福利在线一区二区 | xvideos亚洲| 欧美freexx | 亚洲短视频在线观看 | 可以直接看黄的网站 | 99j久久精品久久久久久 | 亚洲一区二区三区久久久久 | 男女生性毛片免费观看 | 九九久久99综合一区二区 | 黄色一级国产 | 毛片大全高清免费 | 国产午夜亚洲精品第一区 | 亚洲高清免费在线观看 | 婷婷综合视频 | 国产一级视频播放 | 国产成人精品免费视频大全麻豆 | 欧美日韩视频在线观看高清免费网站 | 日本人xxxxxxx中国 | 中文字幕在线影院 | 亚洲人成综合网站在线 | 免费观看性生交大片人 |