最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時間:2023年09月25日 10:07:02   作者:修己xj  
這篇文章主要為大家介紹了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)文章!

相關(guān)文章

  • springboot項目中的bootstrap.yml配置不生效的原因及解決(沒有自動提示)

    springboot項目中的bootstrap.yml配置不生效的原因及解決(沒有自動提示)

    新創(chuàng)建一個 springboot項目,添加了 bootstrap.yml 文件,發(fā)現(xiàn)文件并沒有如預期變成綠色葉子,編寫的時候也沒有自動提示,啟動的時候,發(fā)現(xiàn)端口是8080,由此發(fā)現(xiàn)配置并沒有生效,所以本文給大家講解了springboot項目中的bootstrap.yml配置不生效的原因及解決
    2024-01-01
  • Java中CyclicBarrier的用法分析

    Java中CyclicBarrier的用法分析

    CyclicBarrier和CountDownLatch一樣,都是關(guān)于線程的計數(shù)器。用法略有不同,測試代碼如下:
    2013-03-03
  • java中stream的peek()用法詳解

    java中stream的peek()用法詳解

    這篇文章主要介紹了java中stream的peek()用法詳解,peek的作用是
    改變元素的內(nèi)部狀態(tài),對每個object執(zhí)行 saveInfomation(object, params),然后把結(jié)果收集到一個 List 里,這里涉及到了最終操作,需要的朋友可以參考下
    2024-01-01
  • Spring?Data?JPA查詢方式及方法名查詢規(guī)則介紹

    Spring?Data?JPA查詢方式及方法名查詢規(guī)則介紹

    這篇文章主要介紹了Spring?Data?JPA查詢方式及方法名查詢規(guī)則,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-11-11
  • Springboot集成jsp及部署服務器實現(xiàn)原理

    Springboot集成jsp及部署服務器實現(xiàn)原理

    這篇文章主要介紹了Springboot集成jsp及部署服務器實現(xiàn)原理,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-08-08
  • java Apache poi 對word doc文件進行讀寫操作

    java Apache poi 對word doc文件進行讀寫操作

    這篇文章主要介紹了Apache poi 對word doc文件進行讀寫操作的相關(guān)資料,需要的朋友可以參考下
    2017-01-01
  • Java劍指offer之刪除鏈表的節(jié)點

    Java劍指offer之刪除鏈表的節(jié)點

    這篇文章主要介紹了Java劍指offer之刪除鏈表的節(jié)點,給定單向鏈表的頭指針和一個要刪除的節(jié)點的值,定義一個函數(shù)刪除該節(jié)點。返回刪除后的鏈表的頭節(jié)點,下文更多相關(guān)內(nèi)容介紹,需要的小伙伴可以參考一下
    2022-04-04
  • 基于spring security實現(xiàn)登錄注銷功能過程解析

    基于spring security實現(xiàn)登錄注銷功能過程解析

    這篇文章主要介紹了基于spring security實現(xiàn)登錄注銷功能過程解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-01-01
  • Spring容器注入bean的五種方法逐個解析

    Spring容器注入bean的五種方法逐個解析

    依賴注入(Dependency Injection)和控制反轉(zhuǎn)(Inversion of Control)是同一個概念。具體含義是:當某個角色(可能是一個Java實例,調(diào)用者)需要另一個角色(另一個Java實例,被調(diào)用者)的協(xié)助時,在傳統(tǒng)的程序設計過程中,通常由調(diào)用者來創(chuàng)建被調(diào)用者的實例
    2023-02-02
  • Java綜合整理堆排序?快速排序?歸并排序

    Java綜合整理堆排序?快速排序?歸并排序

    堆排序是利用堆這種數(shù)據(jù)結(jié)構(gòu)而設計的一種排序算法,堆排序是一種選擇排序,它的最壞,最好,平均時間復雜度均為O(nlogn),它也是不穩(wěn)定排序。首先簡單了解下堆結(jié)構(gòu)
    2022-01-01

最新評論

兰溪市| 博客| 梓潼县| 崇仁县| 青岛市| 扶余县| 武乡县| 吉安县| 新闻| 博白县| 固原市| 溧水县| 乐都县| 临湘市| 扎兰屯市| 贡觉县| 舒城县| 商河县| 乐清市| 汉阴县| 昆山市| 肇源县| 黄浦区| 安顺市| 淮北市| 龙川县| 庆阳市| 芮城县| 河东区| 辉南县| 长沙市| 遂平县| 肇庆市| 鄂尔多斯市| 万盛区| 永善县| 泾川县| 双峰县| 长垣县| 洛阳市| 宜兰县|