Conversion de chaîne en flux de caractères

Conversion de chaîne en flux de caractères

1. Vue d'ensemble

Java 8 a introduit l'APIStream, avec des opérations de type fonctionnel pour le traitement des séquences. Si vous voulez en savoir plus,have a look at this article.

Dans cet article rapide, nous allons voir comment convertir unString en unStream de caractères uniques.

2. Conversion en utilisantchars()

L'APIString a une nouvelle méthode -chars() - avec laquelle nous pouvons obtenir une instance deStream à partir d'un objetString. Cette API simple renvoie une instance deIntStream à partir de l'entréeString.

En termes simples,IntStream contient une représentation entière des caractères de l'objetString:

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

Il est possible de travailler avec la représentation entière des caractères sans les convertir en leur équivalentCharacter. Cela peut entraîner des gains de performances mineurs, car il ne sera pas nécessaire de placer chaque entier dans un objetCharacter.

Cependant, si nous voulons afficher les caractères à lire, nous devons convertir les entiers au formatCharacter convivial:

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

3. Conversion en utilisantcodePoints()

Alternativement, nous pouvons utiliser la méthodecodePoints() pour obtenir une instance deIntStream à partir d'unString.. L'avantage d'utiliser cette API est que les caractères supplémentaires Unicode peuvent être gérés efficacement.

Les caractères supplémentaires sont représentés par des paires de substitution Unicode et seront fusionnés en un seul point de code. De cette façon, nous pouvons traiter (et afficher) correctement n'importe quel symbole Unicode:

IntStream intStream1 = testString.codePoints();

Nous devons mapper lesIntStream retournés àStream<Character> pour les afficher aux utilisateurs:

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

4. Conversion enStream du caractère uniqueStrings

Jusqu'à présent, nous avons pu obtenir unStream de caractères; Et si nous voulons unStream de caractère uniqueStrings à la place?

Comme indiqué précédemment dans l'article, nous utiliserons les méthodescodePoints() ouchars() pour obtenir une instance deIntStream que nous pouvons désormais mapper surStream<String>.

Le processus de mappage implique la conversion des valeurs entières en leurs équivalents de caractères respectifs en premier.

Ensuite, nous pouvons utiliserString.valueOf() ouCharacter.toString() pour convertir les caractères en un objetString:

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

5. Conclusion

Dans ce rapide tutoriel, nous apprenons à obtenir un flux deCharacter à partir d'un objetString en appelant les méthodescodePoints() ouchars().

Cela nous permet de tirer pleinement parti de l'APIStream - pour manipuler les caractères de manière pratique et efficace.

Comme toujours, des extraits de code peuvent être trouvésover on GitHub.