国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

Java實(shí)用工具之StringJoiner詳解

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

在平時(shí)的業(yè)務(wù)開(kāi)發(fā)中,我們可能會(huì)遇到字符串列表根據(jù)分隔符進(jìn)行拼接的需求。比如:

輸入:

數(shù)組:[“a”,“b”,“c”]分隔符:','

輸出:

“a,b,c” 處理

通常我們可以使用StringBuilder根據(jù)下標(biāo)位置決定是否需要添加分隔符以達(dá)到目的,比如:

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()); }

但是每次遇到這種情況都去這樣拼接很麻煩,而且如果使用迭代器,沒(méi)有下標(biāo)就不能使用這種方法。那么就每次append分隔符,最后再截?cái)啵?/p>

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)); }

所以通常情況下,我們都會(huì)去擴(kuò)展一個(gè)StringBuilder以提供分隔符組裝的功能,博主平時(shí)是這樣弄的:

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; } /** * 模擬的就是這個(gè)邏輯: * if(index != 0){ * append(delimiter); * } * append(str); * * @return */ private StringBuilder getStringBuilder() {if (stringBuilder == null) { //相當(dāng)于index==0, stringBuilder = new StringBuilder();} else { stringBuilder.append(delimiter);}return stringBuilder; } @Override public String toString() {return stringBuilder == null ? '' : stringBuilder.toString(); }}

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

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

博主大致看了一下StringJoiner的實(shí)現(xiàn)邏輯,很簡(jiǎn)單,和咱們擴(kuò)展StringBuilder基本是一樣的邏輯,另外加入了前綴后綴,然后多了一個(gè)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; }

到此這篇關(guān)于Java實(shí)用工具之StringJoiner詳解的文章就介紹到這了,更多相關(guān)Java StringJoiner內(nèi)容請(qǐng)搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!

標(biāo)簽: Java
相關(guān)文章:
主站蜘蛛池模板: 特级片视频 | 久久橹 | 在线はじめてのおるすばん | 国产欧美综合一区二区 | 免费观看黄色毛片 | 孕妇孕交视频 | 亚洲欧美小视频 | 亚欧成人毛片一区二区三区四区 | 久久99亚洲精品久久 | 国产盗摄一区二区 | 精品一区二区三区在线播放 | 18在线网站 | 黑人特黄aa毛片 | 久久综合网址 | 玖玖玖视频在线观看视频6 玖玖影院在线观看 | 91久久99久91天天拍拍 | 国产视频在线免费观看 | 99r精品在线 | 日本成本人视频 | 一级黄色毛片免费看 | 欧美一级二级毛片视频 | 久久高清影院 | 国产美女做爰免费视频网址 | 国产主播精品福利19禁vip | 手机看片国产免费 | 香蕉国产人午夜视频在线观看 | 台湾三级香港三级经典三在线 | 久久国产网 | 精品高清国产a毛片 | 免费高清特黄a 大片 | 七七国产福利在线二区 | 美女被男人桶到嗷嗷叫爽网站 | 国产欧美日韩不卡在线播放在线 | a级毛片毛片免费很很综合 a级毛片免费 | 手机在线免费看毛片 | 亚洲gogo人体大胆西西安徽 | 又www又黄又爽啪啪网站 | 男人桶女人暴爽的视频 | 亚洲国产美女视频 | 青青草色久综合网 | 国产免费爱在线观看视频 |