Konvertering av streng til strøm av tegn

1. Oversikt

Java 8 introduserte Strøm API, med funksjonellignende operasjoner for behandling av sekvenser. Hvis du vil lese mer om det, kan du ta en titt på denne artikkelen.

I denne raske artikkelen ser vi hvordan du konverterer en String til en Strøm av enkeltpersoner.

2. Konvertering ved hjelp tegn ()

De String API har en ny metode - tegn () - som vi kan få en forekomst av Stream fra en String gjenstand. Denne enkle APIen returnerer en forekomst av IntStrøm fra inngangen String.

For å si det enkelt, IntStream inneholder et heltall representasjon av tegnene fra String gjenstand:

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

Det er mulig å jobbe med heltallrepresentasjonen av tegnene uten å konvertere dem til deres Karakter tilsvarende. Dette kan føre til noen mindre ytelsesgevinster, da det ikke vil være behov for å bokse hvert heltall i en Karakter gjenstand.

Men hvis vi skal vise tegnene for lesing, må vi konvertere heltallene til det menneskelige Karakter skjema:

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

3. Konvertering ved hjelp av codePoints ()

Alternativt kan vi bruke codePoints () metode for å få en forekomst av IntStream fra en String. Fordelen med å bruke denne API-en er at Unicode-tilleggstegn kan håndteres effektivt.

Supplerende tegn er representert av Unicode surrogatpar og vil bli slått sammen til et enkelt kodepunkt. På denne måten kan vi korrekt behandle (og vise) ethvert Unicode-symbol:

IntStream intStream1 = testString.codePoints ();

Vi må kartlegge den returnerte IntStream til Strøm for å vise den til brukerne:

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

4. Konvertering til a Strøm av enkeltkarakter Strenger

Så langt har vi klart å få en Strøm av tegn; hva om vi vil ha en Strøm av enkelt karakter Strings i stedet?

Akkurat som spesifisert tidligere i artikkelen, bruker vi enten codePoints () eller tegn () metoder for å skaffe en forekomst av IntStream som vi nå kan kartlegge til Strøm.

Kartleggingsprosessen innebærer å konvertere heltallverdiene til deres respektive tegnekvivalenter først.

Da kan vi bruke String.valueOf () eller Character.toString () for å konvertere tegnene til en String gjenstand:

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

5. Konklusjon

I denne raske opplæringen lærer vi å få en strøm av Karakter fra en String objektet ved å ringe codePoints () eller tegn () metoder.

Dette lar oss dra full nytte av Strøm API - for å enkelt og effektivt manipulere tegn.

Som alltid kan du finne kodebiter på GitHub.


$config[zx-auto] not found$config[zx-overlay] not found