Java 8中的StringJoiner与String.join的示例
將多個String文字或?qū)ο蠛喜橐粋€是常見的編程要求,并且經(jīng)常會發(fā)現(xiàn)需要為應(yīng)用程序?qū)tring列表或String集合轉(zhuǎn)換為CSV String的情況。 長期以來,JDK API無法將多個String文字或?qū)ο筮B接在一起,這迫使程序員編寫諸如遍歷所有String對象并使用String串聯(lián)手動將其連接以創(chuàng)建最終的連接String的黑客。 即使這種方法有效,但仍然充滿了錯誤和黑客,就像您需要注意不要在第一個元素之前和最后一個元素之后添加定界符,這經(jīng)常會引起問題,尤其是對于初學(xué)者和初級Java開發(fā)人員而言。
但是這種方法的最大問題是每個人都需要重新發(fā)明輪子。 由于這是一個非常普遍的要求,因此您會發(fā)現(xiàn)許多程序員編寫相同的例程并犯相同的錯誤,并且通常以StackOverflow結(jié)尾來解決他們的問題。 幸運的是, Java 8徹底解決了這個問題。
JDK 8 API提供了多種連接字符串的方式,例如您可以使用StringJoiner類連接String或通過調(diào)用String.join()方法來連接String。
在本文中,我們將探討這兩種連接字符串的方法,并了解它們之間的區(qū)別,每種方法的優(yōu)缺點,何時使用StringJoiner以及何時使用String.join()是更好的選擇。
JDK 8 API添加了一個名為java.util.StringJoiner的新類,該類使您可以使用指定的定界符或連接器連接多個String。 例如,您可以連接多個用逗號分隔的字符串
(,)創(chuàng)建CSV字符串,甚至更好,您可以在Linux中通過使用正斜杠“ /”加入String來為Linux中的目錄創(chuàng)建完整路徑,如Cay所解釋。 S. Horstmann在《 不耐煩的Java SE 9》中,這是我最喜歡學(xué)習(xí)Java的書。
這是一個例子:
StringJoiner joiner = new StringJoiner("/"); joiner.add("usr"); joiner.add("local"); joiner.add("bin");這將為您提供一個字符串,例如“ usr / local / bin”,您可以將其傳遞給任何程序。 如果要使用前綴“ /”作為絕對路徑,則可以進一步添加前綴;如果需要相對路徑,則可以像這樣使用前綴。
StringJoiner的另一個優(yōu)點是它提供的流暢的API,這意味著您可以在一行中編寫代碼。 例如,上面的代碼可以使用StringJoiner的流暢方法按以下方式重寫:
String result= new StringJoiner("/").add("usr").add("local").add("bin");這將打印:
"usr/local/bin"在Java 8中使用join()方法連接字符串
StringJoiner的問題在于,您需要知道有一個StringJoiner類,它并不算太壞,但是如果您可以直接從非常流行的java.lang.String類本身中加入String,該怎么辦呢? 嗯,這就是Java設(shè)計師的想法,他們添加了一個靜態(tài)join()方法來直接從String類本身連接String。
這是一個使用String.join()方法連接Java中多個String文字的示例:
String colonSeparatedValue = String.join(":", "abc", "bcd", "def");System.out.println("colon separated String : " + colonSeparatedValue);這將打印以下字符串:
colon separated String : abc:bcd:def 這非常不錯,因為現(xiàn)在您無需擔(dān)心
沒有在開頭添加定界符或從末尾刪除 定界符, 這是在以定界符分隔的循環(huán)中將多個String手動連接在一起時遇到的常見問題之一,如我在Java中生成CSV String的示例中所示。
String.join()方法的另一個優(yōu)點是,您現(xiàn)在可以在Java中將 字符串列表直接轉(zhuǎn)換為CSV字符串 ,而無需編寫任何手動代碼,下面是一個示例。
List mylist = Arrays.asList("London", "Paris", "NewYork");String joined = String.join("||", mylist);System.out.println("Joined String : " + joined);這將打印以下字符串:
Joined String : London||Paris||NewYork很好,不是嗎? 現(xiàn)在,您無需再用Java手動將字符串列表或一組字符串轉(zhuǎn)換為CSV字符串。 還值得注意的是,String.join()內(nèi)部使用StringJoiner類來連接String文字。
這是在Java 8中連接String的2種方法,第一個示例使用
StringJoiner類,而第二個示例使用String.join()方法,這是在JDK 8的java.lang.String上添加的靜態(tài)實用程序方法。
這就是在Java 8中連接String的2種方式 。 現(xiàn)在,您終于可以在不使用第三方庫的情況下,在Java 8中加入String了,并且您還可以選擇使用對您有意義的類。 通常,String類的join()方法更方便,因為您可以直接調(diào)用并傳遞需要連接的分隔符和單個String對象。
我的意思是,您不需要創(chuàng)建另一個對象,例如StringJoiner。 它還允許您從ArrayList或LinkedList之類的Collection類中連接String,這意味著您可以從String的ArrayList創(chuàng)建以逗號分隔的String,這有多酷?
感謝您到目前為止閱讀本文。 如果您喜歡這篇文章,請與您的朋友和同事分享。 如果您有任何疑問或建議,請發(fā)表評論。
翻譯自: https://www.javacodegeeks.com/2019/07/stringjoiner-string-join-java-8-examples.html
總結(jié)
以上是生活随笔為你收集整理的Java 8中的StringJoiner与String.join的示例的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 泽诺尼亚5怎么设置中文(泽诺尼亚5简体中
- 下一篇: jooq 执行sql_使用jOOQ和Ja