Java中的StringJoiner類使用示例深入詳解
引言
在Java編程中,字符串的拼接是一個常見的操作。Java提供了多種方法來實現(xiàn)字符串拼接,其中之一就是StringJoiner類。本文將詳細介紹StringJoiner
的用法和功能。
StringJoiner簡介
StringJoiner
是Java 8引入的一個用于拼接字符串的工具類。它允許我們以指定的分隔符將一組字符串連接成一個單獨的字符串。我們可以在其源碼中看到一個熟悉的身影StringBuilder
,它是基于StringBuilder
實現(xiàn)字符串操作的,所以它的性能和StringBuilder
是差不多的,它也是非線程安全的。
以下是關(guān)于StringJoiner
構(gòu)造方法和屬性的源碼:
package java.util; public final class StringJoiner { private final String prefix; private final String delimiter; private final String suffix; private StringBuilder value; private String emptyValue; public StringJoiner(CharSequence delimiter) { this(delimiter, "", ""); } public StringJoiner(CharSequence delimiter, CharSequence prefix, CharSequence suffix) { Objects.requireNonNull(prefix, "The prefix must not be null"); Objects.requireNonNull(delimiter, "The delimiter must not be null"); Objects.requireNonNull(suffix, "The suffix must not be null"); // make defensive copies of arguments this.prefix = prefix.toString(); this.delimiter = delimiter.toString(); this.suffix = suffix.toString(); this.emptyValue = this.prefix + this.suffix; } }
字段說明:
prefix:這是一個私有字段,表示拼接后的字符串的前綴部分。在構(gòu)造函數(shù)中通過傳遞參數(shù)指定,如果未提供則默認為空字符串。
delimiter:這是一個私有字段,表示拼接字符串時使用的分隔符。同樣,它在構(gòu)造函數(shù)中通過參數(shù)傳遞,如果未提供則默認為空字符串。
suffix:這是一個私有字段,表示拼接后的字符串的后綴部分。同樣,它在構(gòu)造函數(shù)中通過參數(shù)傳遞,如果未提供則默認為空字符串。
value:這是一個私有字段,它是一個StringBuilder對象,用于存儲實際的拼接結(jié)果。
emptyValue:這是一個私有字段,用于存儲拼接結(jié)果為空時的默認值,即前綴和后綴的組合。這個值在構(gòu)造函數(shù)中初始化。
構(gòu)造函數(shù)詳解:
- StringJoiner(CharSequence delimiter)
這個構(gòu)造函數(shù)接受一個CharSequence類型的參數(shù)delimiter,它表示拼接字符串時要使用的分隔符。前綴和后綴默認為空字符串。
- StringJoiner(CharSequence delimiter, CharSequence prefix, CharSequence suffix)
這個構(gòu)造函數(shù)接受三個CharSequence類型的參數(shù),分別是分隔符delimiter
、前綴prefix
和后綴suffix
。這個構(gòu)造函數(shù)允許您自定義拼接結(jié)果的格式。在構(gòu)造函數(shù)內(nèi)部,會檢查這些參數(shù)是否為null,并將它們轉(zhuǎn)換為字符串形式保存在相應的字段中。同時,也會初始化emptyValue字段為前綴和后綴的組合。
add()方法
add()
方法是StringJoiner
類最重要的方法之一。add()
方法用于將元素添加到StringJoiner
對象中。這個方法用于將一個新元素(newElement)添加到StringJoiner
對象中,并返回StringJoiner對象本身(支持鏈式調(diào)用)。源碼如下:
public StringJoiner add(CharSequence newElement) { prepareBuilder().append(newElement); return this; } private StringBuilder prepareBuilder() { if (value != null) { value.append(delimiter); } else { value = new StringBuilder().append(prefix); } return value; }
示例代碼:
public static void main(String[] args) { StringJoiner stringJoiner = new StringJoiner(",","[","]"); stringJoiner.add("x") .add("j"); StringJoiner stringJoiner1 = new StringJoiner(",","(",")"); stringJoiner1.add("x1").add("j1"); System.out.println(stringJoiner.toString()); System.out.println(stringJoiner1.toString()); System.out.println(stringJoiner1.merge(stringJoiner).toString()); System.out.println(stringJoiner1.toString()); System.out.println(stringJoiner.merge(stringJoiner1).toString()); }
輸出結(jié)果:
[x,j]
(x1,j1)
(x1,j1,x,j)
(x1,j1,x,j)
[x,j,x1,j1,x,j]
stream中的應用
有些家人們可能會說,如果我需要把集合 List<String> list 中的字符串使用,
拼接的話可以直接借助stream實現(xiàn)
list.stream().collect(Collectors.joining(","));
我們可以看下Collectors.joining(",")
的源碼就可以發(fā)現(xiàn),他就是借助StringJoiner
實現(xiàn)的,源碼如下:
public static Collector<CharSequence, ?, String> joining(CharSequence delimiter) { return joining(delimiter, "", ""); } public static Collector<CharSequence, ?, String> joining(CharSequence delimiter, CharSequence prefix, CharSequence suffix) { return new CollectorImpl<>( () -> new StringJoiner(delimiter, prefix, suffix), StringJoiner::add, StringJoiner::merge, StringJoiner::toString, CH_NOID); }
總結(jié)
StringJoiner
是一個方便的工具類,用于將字符串連接在一起。- 它提供了靈活的配置選項,適用于各種字符串拼接需求。
- 希望本文能夠幫助您更好地理解和使用Java中的
StringJoiner
類。通過它,您可以更輕松地處理字符串拼接操作,提高代碼的可讀性和可維護性。
以上就是Java中的StringJoiner類使用示例深入詳解的詳細內(nèi)容,更多關(guān)于Java StringJoiner類的資料請關(guān)注腳本之家其它相關(guān)文章!
- JSON.toJSONString()方法在Java中的使用方法及應用場景
- Java中的String不可變性實現(xiàn)
- Java中的StringTokenizer實現(xiàn)字符串切割詳解
- Java中的String、StringBuilder、StringBuffer三者的區(qū)別詳解
- Java的String類中的startsWith方法和endsWith方法示例詳解
- Java中的StringBuilder()常見方法詳解
- java8中的List<String>轉(zhuǎn)List<Integer>的實例代碼
- Java中如何取出String字符串括號中的內(nèi)容
- Java中的StringUtils引入及使用示例教程
- 深入理解Java中的String(示例詳解)
相關(guān)文章
- SpringCloudAlibaba是一款優(yōu)秀的微服務架構(gòu),在市面上有著廣泛的應用,這篇文章介紹了SpringCloudAlibaba的一些基本使用,適合初學者,希望能夠給大家?guī)韼椭?/div> 2024-08-08
詳解Alibaba?Java診斷工具Arthas查看Dubbo動態(tài)代理類
這篇文章主要介紹了Alibaba?Java診斷工具Arthas查看Dubbo動態(tài)代理類?,它可以幫助我們查看JDK或者javassist生成的動態(tài)代理類,當然,它的功能遠不止此,還可以在生產(chǎn)環(huán)境進行診斷,需要的朋友可以參考下2022-04-04最新評論