Pretvaranje niza u tok znakova

1. Pregled

Java 8 je predstavila Stream API, s funkcionalnim operacijama za obradu sekvenci. Ako želite pročitati više o tome, pogledajte ovaj članak.

U ovom brzom članku vidjet ćemo kako pretvoriti Niz do a Stream pojedinačnih znakova.

2. Pretvorba pomoću znakovi ()

The Niz API ima novu metodu - znakovi () - pomoću koje možemo dobiti primjerak Stream od Niz objekt. Ovaj jednostavni API vraća primjerak IntStream iz ulaza Niz.

Jednostavno rečeno, IntStream sadrži cjelobrojni prikaz znakova iz Niz objekt:

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

Moguće je raditi s cjelobrojnim prikazom likova bez pretvaranja u njihov Lik ekvivalent. To može dovesti do nekih manjih dobitaka u izvedbi, jer neće biti potrebno svaki cijeli broj uvrstiti u Lik objekt.

Međutim, ako želimo prikazati znakove za čitanje, trebamo pretvoriti cijele brojeve u prilagođene ljudima Lik oblik:

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

3. Korištenje pretvorbe codePoints ()

Alternativno, možemo koristiti codePoints () metoda za dobivanje instance IntStream od Niz. Prednost korištenja ovog API-ja je u tome što se dodatnim znakovima Unicode može učinkovito rukovati.

Dopunski znakovi predstavljeni su zamjenskim parovima Unicodea i bit će spojeni u jednu kodnu točku. Na ovaj način možemo ispravno obraditi (i prikazati) bilo koji Unicode simbol:

IntStream intStream1 = testString.codePoints ();

Moramo mapirati vraćene IntStream do Stream za prikaz korisnicima:

Struja characterStream2 = testString.codePoints (). MapToObj (c -> (char) c); 

4. Pretvorba u a Stream jednog lika Žice

Do sada smo uspjeli dobiti Stream likova; što ako želimo a Stream jednog karaktera Nizumjesto toga?

Kao što je navedeno u članku, upotrijebit ćemo ili codePoints () ili znakovi () metode za dobivanje instance IntStream koje sada možemo mapirati Stream.

Proces mapiranja uključuje pretvaranje cjelobrojnih vrijednosti u njihove odgovarajuće ekvivalente znakova.

Tada možemo koristiti String.valueOf () ili Character.toString () pretvoriti znakove u a Niz objekt:

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

5. Zaključak

U ovom brzom tutorialu učimo dobivati ​​tok Lik od Niz objekt bilo pozivanjem codePoints () ili znakovi () metode.

To nam omogućuje da u potpunosti iskoristimo Stream API - za praktično i učinkovito rukovanje likovima.

Kao i uvijek, isječke koda možete pronaći na GitHubu.