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 8 StringJoinerJava
- StringJoiner 拯救那些效能低下的字串拼裝程式碼字串
- Java聯結器架構:EAI的未來?Java架構AI
- Java 8新特性:字串去重Java字串
- Java 8 Update 20 的新特性 —— 字串去重Java字串
- 蘋果或為iPhone8配備AR眼鏡和智慧聯結器蘋果iPhone
- Java8特性總結Java
- Java 常用字串操作總結Java字串
- 從聯結器元件看Tomcat的執行緒模型——聯結器簡介元件Tomcat執行緒模型
- Java8 Stream的總結Java
- Kafka聯結器建立資料管道Kafka
- 常用Java8語法小結Java
- java字串Java字串
- 為什麼 Java 8 中不再需要 StringBuilder 拼接字串JavaUI字串
- Java設計模式8:迭代器模式Java設計模式
- Java8常用的新特性總結Java
- Java IO8:IO簡單總結Java
- JAVA虛擬機器-方法區與字串常量池Java虛擬機字串
- 《寫給大忙人看的Java SE 8》——Java8新特性總結(二)Java
- Java™ 教程(字串)Java字串
- java字串解析Java字串
- java------字串Java字串
- Java 8 比較器:如何對 List 排序Java排序
- Java 8中實現構建器模式Java模式
- Java8 新語法習慣 (級聯 lambda 表示式)Java
- Molex莫仕:技術向左,聯結器向右
- 用於Hadoop的MongoDB聯結器庫HadoopMongoDB
- 學習Tomcat(三)之容器聯結器Tomcat
- Java 8 Lambda 表示式學習心得總結Java
- 小試Java虛擬機器記憶體管理(Java 8)Java虛擬機記憶體
- 《深入理解java虛擬機器》學習筆記8——Tomcat類載入器體系結構Java虛擬機筆記Tomcat
- Java 8 最快的垃圾蒐集器是什麼?Java
- JAVA字串轉日期或日期轉字串Java字串
- JAVA基礎學習-數字與字串學習總結Java字串
- API-Weinschel 平面盲插型聯結器API
- java字串常用方法Java字串
- 上升下降字串java字串Java