在Java中怎麼連接空字符串

1. 概述

Java 提供了多種用於連接String.然而, null對象String可能包含一些不需要的值。

在本教程中,我們將看到一些在連接String null String對象的方法。

2. 問題陳述

假設我們想要連接一個String數組的元素,其中任何元素都可能為null

我們可以簡單地使用 + 運算符來做到這一點:

String[] values = { "Java ", null, "", "is ", "great!" };
 String result = "";

 for (String value : values) {
 result = result + value;
 }

這會將所有元素連接到結果String ,如下所示:

Java nullis great!

但是,我們可能不想在輸出中顯示或附加這樣的“空”值。

同樣,如果我們的應用程序在 Java 8 或更高版本上運行String.join()靜態方法獲得相同的輸出:

String result = String.join("", values);

我們也無法避免在使用String.join()方法時連接空元素。

讓我們看看一些方法來避免連接那些null元素並得到我們期望的結果:“Java 很棒!”。

3. 使用 + 運算符

加法 (+) 運算符被重載以連接 Java 中的String在使用 + 運算符連接時,我們可以檢查String是否為null ,並將null String替換為空(“”) String:

for (String value : values) {
 result = result + (value == null ? "" : value);
 }

 assertEquals("Java is great!", result);

或者,我們可以將檢查null String的代碼提取到一個輔助方法中,該方法接受一個String對象並返回一個非null String對象:

for (String value : values) {
 result = result + getNonNullString(value);
 }

在這裡, getNonNullString()方法是我們的輔助方法。它只是檢查輸入String對象null如果輸入對象為null ,則返回空(“”) String ,否則返回相同的String

return value == null ? "" : value;

然而,正如我們所知, String對像在 Java 中是不可變的。這意味著,每次我們String對象時,它都會在內存中String因此,使用 + 運算符進行連接的成本很高。

此外,我們可以使用這種創建輔助方法的方法來檢查各種其他連接支持操作中的null String讓我們來看看其中的一些。

4. 使用String.concat() M方法

Str ing.conca t ()方法是一個很好的選擇,當我們想連接String對象。

在這裡,我們可以使用getNonNullString()方法來檢查null對象並返回一個空String

for (String value : values) {
 result = result.concat(getNonNullString(value));
 }

getNonNullString()方法返回的空String被連接到結果,從而忽略null對象。

5. 使用StringBuilder

[StringBuilder](https://docs.oracle.com/javase/8/docs/api/java/lang/StringBuilder.html)提供了一堆有用且方便的String構建方法。其中之一是append()方法。

在這裡,我們也可以在使用append()方法getNonNullString()方法來避免null

for (String value : values) {
 result = result.append(getNonNullString(value));
 }

6. 使用Streams.filter (Java 8+)

Stream API 提供了大量的順序和並行聚合操作。一個這樣的中間流操作是filter ,它接受一個Predicate作為輸入,並根據給定的Predicate. Stream轉換為另一個Stream

因此,我們可以定義一個Predicate來檢查String null值並將這個Predicate傳遞給filter()方法。因此, filter器將從原始Stream.過濾掉那些null

最後,我們可以使用Collectors.joining() null String值,最後,將結果Stream收集到一個String變量中:

result = Stream.of(values).filter(value -> null != value).collect(Collectors.joining(""));

7. 使用StringJoiner類(Java 8+)

StringJoiner類提供String.join()所有功能以及以給定前綴開頭並以給定後綴結尾的選項.我們可以使用它的add()方法來連接String

和以前一樣,我們可以使用我們的輔助方法getNonNullString()來避免連接null String值:

StringJoiner result = new StringJoiner("");

 for (String value : values) {
 result = result.add(getNonNullString(value));
 }

String.join()StringJoiner之間的一個區別在於,與String.join()不同,我們必須循環遍歷集合( rray, List,等)以連接所有元素。

8. 結論

在本文中,我們展示了避免串聯null String對象的各種方法。總是有不止一種正確的方法來滿足我們的要求。因此,我們必須確定哪種方法最適合給定位置。

我們必須記住,連接String本身可能是一項昂貴的操作,尤其是在循環中。因此,始終建議考慮 Java String API 的性能方面。