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.