Java中String.join()高效字符串拼接的實現(xiàn)
前言
String.join()
是 Java 8 引入的靜態(tài)方法,用于將多個字符串通過指定分隔符合并成一個字符串。它簡化了傳統(tǒng)的字符串拼接邏輯,尤其適合處理集合或數(shù)組中的元素拼接。
一、基礎用法:拼接數(shù)組或集合元素(僅分隔符)
語法
String.join(CharSequence delimiter, CharSequence... elements)
delimiter
:分隔符(如,
、-
等)。elements
:待拼接的字符串數(shù)組或可變參數(shù)。
示例 1:拼接字符串數(shù)組
String[] fruits = {"Apple", "Banana", "Cherry"}; String result = String.join(", ", fruits); System.out.println(result); // 輸出:Apple, Banana, Cherry
示例 2:拼接集合元素
List<String> names = Arrays.asList("Alice", "Bob", "Charlie"); String result = String.join(" -> ", names); System.out.println(result); // 輸出:Alice -> Bob -> Charlie
注意事項
若元素為
null
,會拋出NullPointerException
。若元素為空字符串(
""
),會保留空值(不同于過濾操作):
String[] arr = {"A", "", "B"}; String result = String.join("-", arr); // 輸出:A--B
二、進階用法:結合 Stream API 處理復雜場景
通過 Stream
的 collect(Collectors.joining())
可添加前綴和后綴,語法如下:
.collect(Collectors.joining(delimiter, prefix, suffix))
delimiter
:元素間的分隔符(必填)。prefix
:結果前綴(可選)。suffix
:結果后綴(可選)。
示例 1:添加前綴和后綴(如數(shù)組格式)
List<String> list = Arrays.asList("One", "Two", "Three"); String result = list.stream() .collect(Collectors.joining(", ", "[", "]")); System.out.println(result); // 輸出:[One, Two, Three]
示例 2:處理空集合的默認值
List<String> emptyList = Collections.emptyList(); String result = emptyList.stream() .collect(Collectors.joining(", ", "Items: [", "]")); System.out.println(result); // 輸出:Items: [](空集合時保留前綴和后綴)
三、特殊場景:處理非字符串類型
若元素為非字符串(如數(shù)字、對象),需先轉(zhuǎn)為字符串再拼接:
Integer[] numbers = {1, 2, 3, 4, 5}; String result = Arrays.stream(numbers) .map(String::valueOf) // 轉(zhuǎn)換為字符串 .collect(Collectors.joining(" | ")); System.out.println(result); // 輸出:1 | 2 | 3 | 4 | 5
四、對比傳統(tǒng)拼接方式
傳統(tǒng)方式(StringBuilder)
StringBuilder sb = new StringBuilder(); for (String fruit : fruits) { if (sb.length() > 0) { sb.append(", "); // 手動添加分隔符 } sb.append(fruit); } String result = sb.toString(); // 輸出:Apple, Banana, Cherry
String.join() 優(yōu)勢
代碼更簡潔,無需手動處理分隔符邏輯。
性能與
StringBuilder
相當,適合大多數(shù)場景。
五、注意事項
- 空元素處理:
- 元素為
null
會報錯,需提前過濾:
List<String> list = Arrays.asList("A", null, "B"); String result = list.stream() .filter(Objects::nonNull) // 過濾null .collect(Collectors.joining(", ")); // 輸出:A, B
- 分隔符為空:
String result = String.join("", "Hello", "World"); // 輸出:HelloWorld
- 與
StringJoiner
的區(qū)別:
String.join()
是靜態(tài)方法,底層依賴StringJoiner
實現(xiàn)。StringJoiner
更靈活,可中途修改分隔符、前綴、后綴(如setDelimiter()
)。
總結:常用場景
需求描述 | 代碼示例 | 輸出結果 |
---|---|---|
簡單拼接(逗號分隔) | String.join(", ", "A", "B", "C") | A, B, C |
帶前綴后綴 | Collectors.joining(", ", "List: [", "]") | List: [A, B, C] |
處理數(shù)字集合 | Arrays.stream(numbers).mapToObj(String::valueOf).collect(Collectors.joining("-")) | 1-2-3-4-5 |
空集合處理 | Collectors.joining(", ", "Empty: [", "]")(空集合) | Empty: [] |
合理使用 String.join()
可以大幅簡化字符串拼接邏輯,尤其在處理集合或需要統(tǒng)一分隔符的場景中效率顯著。
到此這篇關于Java中String.join()高效字符串拼接的實現(xiàn)的文章就介紹到這了,更多相關Java String.join()字符串拼接內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Mybatis-Plus的條件構造器QueryWrapper & UpdateWrapper示例詳解
Mybatis-Plus的條件構造器QueryWrapper和UpdateWrapper為開發(fā)者提供了強大、靈活的條件構建工具,能夠大大簡化數(shù)據(jù)庫操作的代碼,通過本文的介紹,讀者可以更加深入地理解這兩個條件構造器的使用方法,并在實際項目中靈活應用,感興趣的朋友跟隨小編一起看看吧2024-01-01Spring中基于Java的配置@Configuration和@Bean用法詳解
這篇文章主要介紹了Spring中基于Java的配置@Configuration和@Bean用法詳解,Spring中為了減少xml中配置,可以聲明一個配置類(例如SpringConfig)來對bean進行配置。,需要的朋友可以參考下2019-06-06Spring-cloud-eureka使用feign調(diào)用服務接口
這篇文章主要為大家詳細介紹了Spring-cloud-eureka使用feign調(diào)用服務接口,具有一定的參考價值,感興趣的小伙伴們可以參考一下2019-04-04關于Java中try finally return語句的執(zhí)行順序淺析
這篇文章主要介紹了關于Java中try finally return語句的執(zhí)行順序淺析,需要的朋友可以參考下2017-08-08解決Java 部署Tomcat時使用jni和jna調(diào)用DLL文件的問題
這篇文章主要介紹了解決Java 部署Tomcat時使用jni和jna調(diào)用DLL文件的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-11-11