Menukar String ke Stream of chars

1. Gambaran keseluruhan

Java 8 memperkenalkan Stream API, dengan operasi seperti fungsi untuk memproses urutan. Sekiranya anda ingin membaca lebih lanjut mengenainya, lihat artikel ini.

Dalam artikel ringkas ini, kita akan melihat cara menukar String ke Stream satu watak.

2. Penukaran Menggunakan watak ()

The String API mempunyai kaedah baru - aksara () - yang kita boleh mendapatkan contoh S Tream dari String objek. API sederhana ini mengembalikan contoh Int Stream dari String input .

Ringkasnya, IntStream berisi representasi integer dari watak-watak dari objek String :

String testString = "String"; IntStream intStream = testString.chars();

Kemungkinan bekerja dengan perwakilan bilangan bulat watak tanpa menukarnya menjadi setara dengan Karakter mereka . Ini dapat menyebabkan peningkatan prestasi kecil, karena tidak perlu memasukkan setiap bilangan bulat ke dalam objek Karakter .

Walau bagaimanapun, jika kita mahu menampilkan watak-watak untuk dibaca, kita perlu menukar bilangan bulat menjadi bentuk Karakter yang mesra manusia :

Stream characterStream = testString.chars() .mapToObj(c -> (char) c);

3. Penukaran Menggunakan kod Titik ()

Sebagai alternatif, kita dapat menggunakan kaedah codePoints () untuk mendapatkan contoh IntStream dari String. Kelebihan menggunakan API ini ialah watak tambahan Unicode dapat dikendalikan dengan berkesan.

Karakter tambahan diwakili oleh pasangan pengganti Unicode dan akan digabungkan menjadi titik titik tunggal. Dengan cara ini kita dapat memproses (dan memaparkan) mana-mana simbol Unicode dengan betul:

IntStream intStream1 = testString.codePoints();

Kita perlu memetakan IntStream ke Stream yang dikembalikan untuk memaparkannya kepada pengguna:

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

4. Penukaran ke Aliran Rentetan Watak Tunggal

Setakat ini, kami dapat memperoleh aliran watak; bagaimana jika kita mahukan Aliran watak tunggal String s?

Sebagaimana yang dinyatakan sebelum ini dalam artikel ini, kami akan menggunakan sama ada codePoints () atau aksara () kaedah untuk mendapatkan contoh IntStream bahawa kita kini boleh memetakan untuk Stream .

Proses pemetaan melibatkan menukar nilai integer ke setara watak masing-masing terlebih dahulu.

Kemudian kita boleh menggunakan String.valueOf () atau Character.toString () untuk menukar watak menjadi objek String :

Stream stringStream = testString.codePoints() .mapToObj(c -> String.valueOf((char) c));

5. Kesimpulan

Dalam tutorial ini cepat, kita belajar untuk mendapatkan aliran Watak dari String objek oleh menelefon codePoints () atau aksara () kaedah.

Ini membolehkan kami memanfaatkan sepenuhnya Stream API - untuk memanipulasi watak dengan mudah dan berkesan.

Seperti biasa, coretan kod boleh didapati di GitHub.