String converteren naar stroom van tekens

1. Overzicht

Java 8 introduceerde het Stroom API, met functioneel-achtige bewerkingen voor het verwerken van reeksen. Als je er meer over wilt lezen, bekijk dan dit artikel.

In dit korte artikel zullen we zien hoe u een Draad naar een Stroom van enkele karakters.

2. Conversie met behulp van tekens ()

De Draad API heeft een nieuwe methode - tekens () - waarmee we een exemplaar van Stream van een Draad voorwerp. Deze eenvoudige API retourneert een exemplaar van IntStroom van de ingang Draad.

Simpel gezegd, IntStream bevat een integer-weergave van de tekens uit de Draad voorwerp:

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

Het is mogelijk om met de integer-weergave van de tekens te werken zonder ze naar hun Karakter gelijkwaardig. Dit kan leiden tot enkele kleine prestatieverbeteringen, aangezien het niet nodig is om elk geheel getal in een Karakter voorwerp.

Als we de tekens echter willen weergeven om te lezen, moeten we de gehele getallen converteren naar het mensvriendelijke Karakter het formulier:

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

3. Conversie met behulp van codepunten ()

Als alternatief kunnen we de codepunten () methode om een ​​exemplaar van IntStream van een Draad. Het voordeel van het gebruik van deze API is dat aanvullende Unicode-tekens effectief kunnen worden verwerkt.

Aanvullende tekens worden vertegenwoordigd door Unicode-surrogaatparen en worden samengevoegd tot één codepunt. Op deze manier kunnen we elk Unicode-symbool correct verwerken (en weergeven):

IntStream intStream1 = testString.codePoints ();

We moeten het geretourneerde land in kaart brengen IntStream naar Stroom om het aan gebruikers weer te geven:

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

4. Conversie naar een Stroom van één teken Snaren

Tot nu toe hebben we een Stroom van karakters; wat als we een Stroom van één karakter Draads in plaats daarvan?

Net zoals eerder in het artikel is gespecificeerd, gebruiken we ofwel de codepunten () of tekens () methoden om een ​​exemplaar van IntStream waarnaar we nu kunnen toewijzen Stroom.

Het toewijzingsproces omvat het eerst converteren van de gehele getallen naar hun respectieve karakterequivalenten.

Dan kunnen we gebruiken String.valueOf () of Character.toString () om de tekens om te zetten in een Draad voorwerp:

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

5. Conclusie

In deze korte tutorial leren we om een ​​stream van Karakter van een Draad object door een van beide te bellen codepunten () of tekens () methoden.

Hierdoor kunnen we optimaal profiteren van de Stroom API - om karakters gemakkelijk en effectief te manipuleren.

Zoals altijd zijn codefragmenten te vinden op GitHub.