Java String Join: 多種方式讓你輕鬆拼接字元串

在 Java 開發中,我們經常需要將多個字元串拼接成一個字元串,比如拼接 URL、拼接 JSON 或者 XML 數據。在過去,我們可以使用字元串拼接符 + 或者 StringBuilder/ StringBuffer 類來實現字元串拼接。然而,自從 Java 8 引入了 StringJoiner 和 String.join() 方法之後,我們可以更加方便地進行字元串拼接操作。這篇文章將圍繞 Java String Join 進行詳細闡述,從各個方面分析其使用方法和優點。

一、String.join() 函數介紹

Java 8 引入了 String.join() 方法,該方法允許我們使用指定的 delimiter(定界符)作為分隔符,將字元串數組中的所有元素連接起來。具體的用法如下:

String str = String.join("-", "Java", "is", "cool");
System.out.println(str); // Java-is-cool

上面的代碼使用「-」作為分隔符,將字元串數組 {“Java”, “is”, “cool”} 中的所有元素連接起來,得到結果 「Java-is-cool」。

下面我們來看一下 String.join() 方法的一些細節:

1. 可以很方便地合併字元串列表

String.join() 方法也可以接收一個字元串列表,這樣使用起來更加方便了:

List list = Arrays.asList("Java", "is", "cool");
String str = String.join("-", list);
System.out.println(str); // Java-is-cool

2. delimiter 參數可以為空

如果你不想使用分隔符,那麼直接將該參數留空即可:

String str = String.join("", "Java", "is", "cool");
System.out.println(str); // Javaiscool

3. 只有一個參數的時候,不會添加分隔符

如果只有一個字元串參數,那麼 String.join() 方法不會添加分隔符:

String str = String.join("-", "Java");
System.out.println(str); // Java

4. 不僅僅能用在字元串上,也能用在字元上

String.join() 方法不僅僅能被用於字元串數組上,還能被用於字元數組、集合以及其他容器對象上:

char delimiter = '-';
char[] charArray = new char[]{'J', 'a', 'v', 'a'};
String str = String.join("-", Character.toString(delimiter), Character.toString(charArray));
System.out.println(str); // -J-a-v-a-

5. String.join(CharSequence delimiter, Iterable elements) 返回一個 String 對象

String.join(CharSequence delimiter, Iterable<? extends CharSequence> elements) 方法返回一個 String 對象,即字元串連接成的結果,如下代碼所示:

List list = Arrays.asList("Java", "is", "cool");
String str = String.join("-", list);
System.out.println(str); // Java-is-cool

二、使用 StringJoiner 類型拼接字元串

StringJoiner 是 Java 8 中專門用來拼接字元串的工具類,可以方便地將多個字元串拼接成一個字元串。StringJoiner 實例化時需要傳入定界符、前綴和後綴。這些參數都是可選的。

1. 僅含定界符 join

以下代碼展示了如何僅包含一個定界符的例子:

StringJoiner sj = new StringJoiner(",");
sj.add("Java");
sj.add("is");
sj.add("cool");
String result = sj.toString(); // Java,is,cool

2. 包含前綴和後綴 join

以下代碼展示了如何包含定界符、前綴以及後綴的例子:

StringJoiner sj = new StringJoiner(", ", "{", "}");
sj.add("Java");
sj.add("is");
sj.add("cool");
String result = sj.toString(); // {Java, is, cool}

3. 多種樣式的 StringJoiner

StringJoiner 還支持多種不同風格的操作,包括:

  • 忽略空值
  • 自定義 null 值替換
  • 自定義開頭和結尾組成的字元串

示例代碼如下:

StringJoiner sj = new StringJoiner(",");
sj.setEmptyValue("default"); // 當元素列表為空時,顯示默認值
sj.add("");
sj.add("Java");
sj.add("is");
sj.add(null);
sj.add("cool");
String result = sj.toString(); // ,Java,is,,cool

三、使用 StringBuilder/ StringBuffer 進行字元串拼接

在 Java 中,StringBuilder 和 StringBuffer 是用來處理可變字元串的兩個類。它們的本質區別是 StringBuffer 是線程安全的,而 StringBuilder 是線程不安全的,但 StringBuilder 的性能更優。這兩個類的常用方法基本相似,都有 append 和 insert 等方法。

1. 使用 StringBuilder 進行字元串拼接

以下代碼展示了如何使用 StringBuilder 進行字元串拼接:

StringBuilder sb = new StringBuilder();
sb.append("Java");
sb.append(" is");
sb.append(" cool");
String result = sb.toString(); // Java is cool

2. 使用 StringBuffer 進行字元串拼接

以下代碼展示了如何使用 StringBuffer 進行字元串拼接:

StringBuffer sb = new StringBuffer();
sb.append("Java");
sb.append(" is");
sb.append(" cool");
String result = sb.toString(); // Java is cool

3. StringBuilder 與 StringBuffer 的性能比較

StringBuilder 的性能比 StringBuffer 更優,但由於 StringBuffer 是線程安全的,所以在多線程場景下更加安全。下面是一個簡單的性能比較示例:

long startTime = System.nanoTime();
StringBuilder sb = new StringBuilder();
for (int i = 0; i < 100000; i++) {
    sb.append(i);
}
String result = sb.toString(); // 生成最終字元串
long endTime = System.nanoTime();
long duration = endTime - startTime;
System.out.println("StringBuilder: " + duration);

startTime = System.nanoTime();
StringBuffer sbf = new StringBuffer();
for (int i = 0; i < 100000; i++) {
    sbf.append(i);
}
result = sbf.toString(); // 生成最終字元串
endTime = System.nanoTime();
duration = endTime - startTime;
System.out.println("StringBuffer: " + duration);

以上代碼統計了使用 StringBuilder 和 StringBuffer 分別拼接 100000 次的時間。根據測試結果,StringBuilder 的耗時是 StringBuffer 的 1/4 左右。

四、Java StringJoiner 和 String.join() 的性能比較

下面是一個簡單的性能比較示例,比較了使用 Java StringJoiner 和 String.join() 的拼接性能差異:

long startTime = System.nanoTime();
StringJoiner sj = new StringJoiner("-");
for (int i = 0; i < 100000; i++) {
    sj.add("Java");
    sj.add("is");
    sj.add("cool");
}
String result = sj.toString(); // 生成最終字元串
long endTime = System.nanoTime();
long duration = endTime - startTime;
System.out.println("StringJoiner: " + duration);

startTime = System.nanoTime();
String str = "";
for (int i = 0; i < 100000; i++) {
    str += "Java" + "-" + "is" + "-" + "cool";
}
result = str.toString(); // 生成最終字元串
endTime = System.nanoTime();
duration = endTime - startTime;
System.out.println("String: " + duration);

從測試結果可以看出,使用 Java StringJoiner 更加高效。

總結

通過本文的介紹和示例代碼,我們可以看到 Java String Join 帶來的方便和效率。在大多數情況下,String.join() 和 StringJoiner 可以滿足我們的需求,並且對性能的影響是可忽略的。而在特別複雜的字元串拼接場景中,我們可以選擇使用 StringBuilder 和 StringBuffer。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/238476.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-12 12:11
下一篇 2024-12-12 12:11

相關推薦

  • Python字元串寬度不限制怎麼打代碼

    本文將為大家詳細介紹Python字元串寬度不限制時如何打代碼的幾個方面。 一、保持代碼風格的統一 在Python字元串寬度不限制的情況下,我們可以寫出很長很長的一行代碼。但是,為了…

    編程 2025-04-29
  • Python中將字元串轉化為浮點數

    本文將介紹在Python中將字元串轉化為浮點數的常用方法。在介紹方法之前,我們先來思考一下這個問題應該如何解決。 一、eval函數 在Python中,最簡單、最常用的將字元串轉化為…

    編程 2025-04-29
  • Java判斷字元串是否存在多個

    本文將從以下幾個方面詳細闡述如何使用Java判斷一個字元串中是否存在多個指定字元: 一、字元串遍歷 字元串是Java編程中非常重要的一種數據類型。要判斷字元串中是否存在多個指定字元…

    編程 2025-04-29
  • Python返回數組:一次性搞定多種數據類型

    Python是一種多用途的高級編程語言,具有高效性和易讀性的特點,因此被廣泛應用於數據科學、機器學習、Web開發、遊戲開發等各個領域。其中,Python返回數組也是一項非常強大的功…

    編程 2025-04-29
  • Python學習筆記:去除字元串最後一個字元的方法

    本文將從多個方面詳細闡述如何通過Python去除字元串最後一個字元,包括使用切片、pop()、刪除、替換等方法來實現。 一、字元串切片 在Python中,可以通過字元串切片的方式來…

    編程 2025-04-29
  • Python獲取當前日期的多種方法

    本文介紹如何使用Python獲取當前日期,並提供了多種方法,包括使用datetime模塊、time模塊以及第三方庫dateutil等。讓我們一步一步來看。 一、使用datetime…

    編程 2025-04-29
  • Python生成隨機數的多種方法

    本文將從以下幾個方面詳細介紹如何使用Python生成隨機數。 一、random模塊的使用 Python內置的random模塊能夠生成偽隨機數,使用該模塊,可以生成隨機數、隨機整數等…

    編程 2025-04-29
  • Python如何將字元串1234變成數字1234

    Python作為一種廣泛使用的編程語言,對於數字和字元串的處理提供了很多便捷的方式。如何將字元串「1234」轉化成數字「1234」呢?下面將從多個方面詳細闡述Python如何將字元…

    編程 2025-04-29
  • Python int轉二進位字元串

    本文將從以下幾個方面對Python中將int類型轉換為二進位字元串進行詳細闡述: 一、int類型和二進位字元串的定義 在Python中,int類型表示整數,二進位字元串則是由0和1…

    編程 2025-04-29
  • 用title和capitalize美觀處理Python字元串

    在Python中,字元串是最常用的數據類型之一。對字元串的美觀處理是我們在實際開發中經常需要的任務之一。Python內置了一些方法,如title和capitalize,可以幫助我們…

    編程 2025-04-28

發表回復

登錄後才能評論