欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java中的StringJoiner類使用示例深入詳解

 更新時(shí)間:2023年09月25日 10:07:02   作者:修己xj  
這篇文章主要為大家介紹了Java中的StringJoiner類使用示例深入詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

引言

在Java編程中,字符串的拼接是一個(gè)常見的操作。Java提供了多種方法來實(shí)現(xiàn)字符串拼接,其中之一就是StringJoiner類。本文將詳細(xì)介紹StringJoiner的用法和功能。

StringJoiner簡(jiǎn)介

StringJoiner是Java 8引入的一個(gè)用于拼接字符串的工具類。它允許我們以指定的分隔符將一組字符串連接成一個(gè)單獨(dú)的字符串。我們可以在其源碼中看到一個(gè)熟悉的身影StringBuilder,它是基于StringBuilder實(shí)現(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è)私有字段,表示拼接后的字符串的前綴部分。在構(gòu)造函數(shù)中通過傳遞參數(shù)指定,如果未提供則默認(rèn)為空字符串。

  • delimiter:這是一個(gè)私有字段,表示拼接字符串時(shí)使用的分隔符。同樣,它在構(gòu)造函數(shù)中通過參數(shù)傳遞,如果未提供則默認(rèn)為空字符串。

  • suffix:這是一個(gè)私有字段,表示拼接后的字符串的后綴部分。同樣,它在構(gòu)造函數(shù)中通過參數(shù)傳遞,如果未提供則默認(rèn)為空字符串。

  • value:這是一個(gè)私有字段,它是一個(gè)StringBuilder對(duì)象,用于存儲(chǔ)實(shí)際的拼接結(jié)果。

  • emptyValue:這是一個(gè)私有字段,用于存儲(chǔ)拼接結(jié)果為空時(shí)的默認(rèn)值,即前綴和后綴的組合。這個(gè)值在構(gòu)造函數(shù)中初始化。

構(gòu)造函數(shù)詳解:

  • StringJoiner(CharSequence delimiter)

這個(gè)構(gòu)造函數(shù)接受一個(gè)CharSequence類型的參數(shù)delimiter,它表示拼接字符串時(shí)要使用的分隔符。前綴和后綴默認(rèn)為空字符串。

  • StringJoiner(CharSequence delimiter, CharSequence prefix, CharSequence suffix)

這個(gè)構(gòu)造函數(shù)接受三個(gè)CharSequence類型的參數(shù),分別是分隔符delimiter、前綴prefix和后綴suffix。這個(gè)構(gòu)造函數(shù)允許您自定義拼接結(jié)果的格式。在構(gòu)造函數(shù)內(nèi)部,會(huì)檢查這些參數(shù)是否為null,并將它們轉(zhuǎn)換為字符串形式保存在相應(yīng)的字段中。同時(shí),也會(huì)初始化emptyValue字段為前綴和后綴的組合。

add()方法

add()方法是StringJoiner類最重要的方法之一。add()方法用于將元素添加到StringJoiner對(duì)象中。這個(gè)方法用于將一個(gè)新元素(newElement)添加到StringJoiner對(duì)象中,并返回StringJoiner對(duì)象本身(支持鏈?zhǔn)秸{(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中的應(yīng)用

有些家人們可能會(huì)說,如果我需要把集合 List<String> list 中的字符串使用,拼接的話可以直接借助stream實(shí)現(xiàn)

list.stream().collect(Collectors.joining(","));

我們可以看下Collectors.joining(",") 的源碼就可以發(fā)現(xiàn),他就是借助StringJoiner實(shí)現(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是一個(gè)方便的工具類,用于將字符串連接在一起。
  • 它提供了靈活的配置選項(xiàng),適用于各種字符串拼接需求。
  • 希望本文能夠幫助您更好地理解和使用Java中的StringJoiner類。通過它,您可以更輕松地處理字符串拼接操作,提高代碼的可讀性和可維護(hù)性。

以上就是Java中的StringJoiner類使用示例深入詳解的詳細(xì)內(nèi)容,更多關(guān)于Java StringJoiner類的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • java中Ajax與Axios的使用小結(jié)

    java中Ajax與Axios的使用小結(jié)

    在項(xiàng)目中我們經(jīng)常會(huì)遇到需要向請(qǐng)求頭中添加消息的場(chǎng)景,本文主要介紹了java中Ajax與Axios的使用小結(jié),文中通過示例代碼介紹的非常詳細(xì),需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-02-02
  • springboot項(xiàng)目之相互依賴報(bào)錯(cuò)問題(基于idea)

    springboot項(xiàng)目之相互依賴報(bào)錯(cuò)問題(基于idea)

    這篇文章主要介紹了springboot項(xiàng)目之相互依賴報(bào)錯(cuò)問題(基于idea),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-02-02
  • Springcloud Alibaba超詳細(xì)使用詳解

    Springcloud Alibaba超詳細(xì)使用詳解

    SpringCloudAlibaba是一款優(yōu)秀的微服務(wù)架構(gòu),在市面上有著廣泛的應(yīng)用,這篇文章介紹了SpringCloudAlibaba的一些基本使用,適合初學(xué)者,希望能夠給大家?guī)韼椭?/div> 2024-08-08
  • 手把手帶你用java搞定漢諾塔

    手把手帶你用java搞定漢諾塔

    這篇文章主要給大家介紹了關(guān)于Java青蛙跳臺(tái)階問題的解決思路與代碼,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-08-08
  • Java clone方法詳解及簡(jiǎn)單實(shí)例

    Java clone方法詳解及簡(jiǎn)單實(shí)例

    這篇文章主要介紹了 Java clone方法詳解及簡(jiǎn)單實(shí)例的相關(guān)資料,需要的朋友可以參考下
    2017-03-03
  • 基于@RequestBody注解只能注入對(duì)象和map的解決

    基于@RequestBody注解只能注入對(duì)象和map的解決

    這篇文章主要介紹了@RequestBody注解只能注入對(duì)象和map的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-10-10
  • Spring詳解四種加載配置項(xiàng)的方法

    Spring詳解四種加載配置項(xiàng)的方法

    這篇文章主要給大家介紹了關(guān)于springboot加載配置項(xiàng)的四種方式,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用springboot具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2022-06-06
  • struts2實(shí)現(xiàn)文件上傳顯示進(jìn)度條效果

    struts2實(shí)現(xiàn)文件上傳顯示進(jìn)度條效果

    這篇文章主要為大家詳細(xì)介紹了struts2實(shí)現(xiàn)文件上傳顯示進(jìn)度條效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-05-05
  • Java的Object類九個(gè)方法技巧

    Java的Object類九個(gè)方法技巧

    這篇文章主要介紹了Java的Object類九個(gè)方法技巧,Java的Object?類的完整路徑是java.lang.Object?,是所有類的父類編譯,下文相關(guān)資料,需要的朋友可以參考一下
    2022-04-04
  • 詳解Alibaba?Java診斷工具Arthas查看Dubbo動(dòng)態(tài)代理類

    詳解Alibaba?Java診斷工具Arthas查看Dubbo動(dòng)態(tài)代理類

    這篇文章主要介紹了Alibaba?Java診斷工具Arthas查看Dubbo動(dòng)態(tài)代理類?,它可以幫助我們查看JDK或者javassist生成的動(dòng)態(tài)代理類,當(dāng)然,它的功能遠(yuǎn)不止此,還可以在生產(chǎn)環(huán)境進(jìn)行診斷,需要的朋友可以參考下
    2022-04-04

最新評(píng)論