Java 8 StringJoiner字串聯結器
在這篇簡短的文章中,我們將介紹Java 8 StringJoiner特性,並將探索有哪些不同的特性以及如何更有效地使用Java 8 Stream API。
在日常程式設計活動中的一項非常常見的任務中加入多個字串。在 Java 中沒有直接連線多個 String 的方法(除了使用第三方 API)。Java 8引入了一個新類StringJoiner,可用於連線多個字串。StringJoiner是一種 Collector,在這個類的幫助下,我們可以用特定的分隔符連線多個字串,它還提供了向最終輸出新增字首和字尾的選項。本文重點介紹 Java 8 StringJoiner 類及其不同的特性。
使用分隔符
StringJoiner joiner = new StringJoiner(","); joiner.add("Sunday"); joiner.add("Monday"); joiner.add("Tuesday"); System.out.println(joiner.toString()); |
使用分隔符、字首和字尾
public static void joinerWithDelimiterWithPrefixAndSuffix(){ StringJoiner joiner = new StringJoiner(",", "Prefix-", "-Suffix"); joiner.add("Sunday"); joiner.add("Monday"); joiner.add("Tuesday"); joiner.add("Wednesday"); //display output System.out.println(joiner.toString()); } 輸出: Prefix-Sunday-Monday-Tuesday-Wednesday-Suffix |
多個 StringJoiner
使用 StringJoiner 的merge()方法合併多個StringJoiner:
StringJoiner joiner1= new StringJoiner("|"); StringJoiner joiner2= new StringJoiner(";"); StringJoiner joiner3= new StringJoiner(";"); joiner2.add("one"); joiner2.add("two"); joiner1.merge(joiner2); joiner3.add("three"); joiner3.add("four"); joiner1.merge(joiner3); System.out.println(joiner1.toString()); 輸出: |
one;two|three;four
String.join()
StringJoiner由兩個靜態String.join方法內部使用:
String output= String.join("-", "2017","09","30"); 2017-09-30 //output List<String> list= Arrays.asList("one","two","three"); String output = String.join("-", list); one-two-three //output |
Collectors.joining
StringJoiner可以很容易地與新的Java 8 收集器一起使用。這是使用Java 8 StringJoiner類的間接方式。
List<Customer> customers = Arrays.asList( new Customer("John", "Smith"), new Customer("Umesh", "Awasthi"), new Customer("Andy", "Flower") ); final String customerJoin = customers.stream() .map(Customer::getFirstName) .collect(Collectors.joining(",")); System.out.println(customerJoin); |
輸出:
John, Umesh, Andy
StringJoiner 和 setEmptyValue 方法
在上面的所有示例中,我們使用了toString()從 joiner 類中獲取值的方法。您應該注意以下幾點:
- 如果沒有提供字首和字尾並且字串為空,則聯結器將返回空字串。
- 對於空字串和字首 ans suffix ,joiner 將返回一個包含字首和字尾的字串。
這在大多數情況下都有效,但有時,我們可能需要一個不同的預設值,以防字串為空(我們不想要空字串),StringJoiner 提供了setEmptyValue()幫助我們設定預設值的方法,以防字串為空。讓我們看一個例子:
import java.util.StringJoiner; public class StringJoinerExample { public static void main(String args) { StringJoiner joiner = new StringJoiner(","); System.out.println(joiner.toString()); // empty String joiner.setEmptyValue("Default Value"); System.out.println(joiner.toString()); //Default Value } } |
僅當StringJoiner為空時才返回預設值Default Value
import java.util.StringJoiner; public class StringJoinerExample { public static void main(String[] args) { StringJoiner joiner = new StringJoiner(","); System.out.println(joiner.toString()); // empty String joiner.setEmptyValue("Default Value"); joiner.add("Checking"); joiner.add("setEmptyValue behaviour"); System.out.println(joiner.toString()); //Checking,setEmptyValue behaviour } } |
StringJoiner和StringBuilder
使用Java 8 Stream API,StringJoiner 與StringBuilder 相比非常有用。讓我們舉個例子來理解使用SpringJoiner 和StringBuilder 之間的區別。
List<String> list = Arrays.asList("Foo","Bar"); //join string using StringJoiner String output = list.stream().collect(Collectors.joining(",")); //using StringBuilder String collectoutput = list.stream().collect(Collector.of(StringBuilder::new, (stringBuilder, str) -> stringBuilder.append(str).append(", "), StringBuilder::append, StringBuilder::toString)); |
概括
在這篇文章中,我們得到了Java8 StringJoiner的介紹。我們探索了 StringJoiner 類的各種功能以及如何使用它來連線多個字串。我們也可以將 StringJoiner 視為一種收集器,在處理並行流時非常有用。原始碼可在我們的GitHub 儲存庫中找到。
相關文章
- Java 8中字串拼接新姿勢:StringJoinerJava字串
- Java聯結器架構:EAI的未來?Java架構AI
- 從聯結器元件看Tomcat的執行緒模型——聯結器簡介元件Tomcat執行緒模型
- java字串Java字串
- 你只會用 StringBuilder?試試 StringJoiner,真香!UI
- 常用Java8語法小結Java
- Java8常用的新特性總結Java
- Java™ 教程(字串)Java字串
- java------字串Java字串
- Kafka聯結器建立資料管道Kafka
- JAVA虛擬機器-方法區與字串常量池Java虛擬機字串
- Java 8中實現構建器模式Java模式
- JAVA字串轉日期或日期轉字串Java字串
- FCI聯結器加速世界的發展
- 1.11.2 flinksql自定義sls connector 聯結器SQL
- 用於Hadoop的MongoDB聯結器庫HadoopMongoDB
- 學習Tomcat(三)之容器聯結器Tomcat
- Lemmy - 聯邦宇宙的連結聚合器
- JAVA基礎學習-數字與字串學習總結Java字串
- Java-string字串Java字串
- leetcode:字串相乘(java)LeetCode字串Java
- Java中的字串Java字串
- java字串常用方法Java字串
- 上升下降字串java字串Java
- Java8 新語法習慣 (級聯 lambda 表示式)Java
- Java™ 教程(比較字串和字串的部分)Java字串
- 【重溫基礎】8.字串字串
- DM8 字串大小寫敏感字串
- API-Weinschel 平面盲插型聯結器API
- Molex莫仕:技術向左,聯結器向右
- js字串方法總結JS字串
- js 字串方法小結JS字串
- 資料結構 - 字串資料結構字串
- C++:字串總結C++字串
- Java基礎系列—字串Java字串
- Element原始碼分析系列8-Cascader(級聯選擇器)原始碼
- java8預設使用的垃圾收集器Java
- 8-字串的壓縮儲存字串