將字符串轉換為字符流

1.概述

Java 8引入了Stream API,具有用於處理序列的類似功能的操作。如果您想了解更多關於它的信息,請看這篇文章。

在這篇快速文章中,我們將看到如何將String轉換為單個字符Stream

2.使用chars()轉換

String API具有一個新方法chars() ,通過該方法我們可以從String對象獲取S tream的實例。這個簡單的API從輸入String返回一個Int Stream實例。

簡而言之, IntStream包含String對像中字符的整數表示形式:

String testString = "String";

 IntStream intStream = testString.chars();

可以使用字符的整數表示形式,而無需將它們轉換為等效的Character 。這將導致一些次要的性能提升,因為無需將每個整數裝箱到Character像中。

但是,如果要顯示要讀取的字符,則需要將整數轉換為人類友好的Character形式:

Stream<Character> characterStream = testString.chars()

 .mapToObj(c -> (char) c);

3.使用codePoints()轉換

另外,我們可以使用codePoints()方法從String.獲取IntStream的實例String.使用此API的優點是可以有效地處理Unicode補充字符。

補充字符由Unicode代理對錶示,並將被合併為單個代碼點。這樣,我們可以正確處理(並顯示)任何Unicode符號:

IntStream intStream1 = testString.codePoints();

我們需要將返回的IntStream映射到Stream<Character>以將其顯示給用戶:

Stream<Character> characterStream2

 = testString.codePoints().mapToObj(c -> (char) c);

4.轉換為單個Strings Stream

到目前為止,我們已經能夠獲得字符Stream ;如果我們想要一個由單個字符StringStream怎麼辦?

正如本文前面所指定的那樣,我們將使用codePoints()chars()方法來獲取IntStream的實例,該實例現在可以映射到Stream<String>

映射過程包括首先將整數值轉換為它們各自的等效字符。

然後,我們可以使用String.valueOf()Character.toString()將字符轉換為String對象:

Stream<String> stringStream = testString.codePoints()

 .mapToObj(c -> String.valueOf((char) c));

5.結論

在本快速教程中,我們將學習通過調用codePoints()chars()方法從String對象獲取Character流。

這使我們能夠充分利用Stream API –方便而有效地操作字符。

與往常一樣,可以在GitHub上找到代碼段。