Zeichenkette in Zeichenstrom konvertieren

Konvertieren von String in Stream of Chars

1. Überblick

Java 8 führte dieStream-API mit funktionsähnlichen Operationen zur Verarbeitung von Sequenzen ein. Wenn Sie mehr darüber lesen möchten,have a look at this article.

In diesem kurzen Artikel erfahren Sie, wie SieString inStream einzelner Zeichen konvertieren.

2. Konvertierung mitchars()

DieString-API hat eine neue Methode -chars() - mit der wir eine Instanz vonStream von einemString-Objekt erhalten können. Diese einfache API gibt eine Instanz vonIntStream von der EingabeString zurück.

Einfach ausgedrückt enthältIntStream eine ganzzahlige Darstellung der Zeichen aus dem ObjektString:

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

Es ist möglich, mit der ganzzahligen Darstellung der Zeichen zu arbeiten, ohne sie in das Äquivalent vonCharacterumzuwandeln. Dies kann zu geringfügigen Leistungssteigerungen führen, da nicht jede Ganzzahl in das ObjektCharactereingefügt werden muss.

Wenn wir jedoch die Zeichen zum Lesen anzeigen möchten, müssen wir die Ganzzahlen in die menschenfreundlicheCharacter-Form konvertieren:

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

3. Konvertierung mitcodePoints()

Alternativ können wir diecodePoints()-Methode verwenden, um eine Instanz vonIntStream von einemString. abzurufen. Der Vorteil der Verwendung dieser API besteht darin, dass zusätzliche Unicode-Zeichen effektiv verarbeitet werden können.

Ergänzende Zeichen werden durch Unicode-Ersatzpaare dargestellt und zu einem einzigen Codepunkt zusammengeführt. Auf diese Weise können wir jedes Unicode-Symbol korrekt verarbeiten (und anzeigen):

IntStream intStream1 = testString.codePoints();

Wir müssen die zurückgegebenenIntStreamStream<Character> zuordnen, um sie den Benutzern anzuzeigen:

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

4. Umrechnung inStream von EinzelzeichenStrings

Bisher konnten wirStream von Zeichen erhalten. Was ist, wenn wir stattdessenStream eines einzelnen ZeichensStrings wollen?

Wie bereits weiter oben in diesem Artikel angegeben, verwenden wir entweder die MethodencodePoints() oderchars(), um eine Instanz vonIntStream zu erhalten, die wir jetztStream<String> zuordnen können.

Der Zuordnungsprozess umfasst zuerst das Konvertieren der ganzzahligen Werte in ihre jeweiligen Zeichenäquivalente.

Dann können wirString.valueOf() oderCharacter.toString() verwenden, um die Zeichen in einString-Objekt zu konvertieren:

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

5. Fazit

In diesem kurzen Tutorial lernen wir, einen Stream vonCharacter aus einemString-Objekt zu erhalten, indem wir entweder die MethodencodePoints() oderchars() aufrufen.

Auf diese Weise können wir die API vonStreamvoll ausnutzen, um Zeichen bequem und effektiv zu bearbeiten.

Wie immer können Codefragmenteover on GitHub gefunden werden.