Conversion d'une chaîne en flux de caractères

1. Vue d'ensemble

Java 8 a introduit l' API Stream , avec des opérations de type fonctionnel pour le traitement des séquences. Si vous voulez en savoir plus à ce sujet, consultez cet article.

Dans cet article rapide, nous verrons comment convertir une chaîne en un flux de caractères uniques.

2. Conversion à l'aide de chars ()

L' API String a une nouvelle méthode - chars () - avec laquelle nous pouvons obtenir une instance de S tream à partir d'un objet String . Cette API simple renvoie une instance de Int Stream à partir de la chaîne d' entrée .

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

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 équivalent caractère . Cela peut entraîner des gains de performances mineurs, car il ne sera pas nécessaire de placer chaque entier dans un objet Character .

Cependant, si nous voulons afficher les caractères pour la lecture, nous devons convertir les nombres entiers sous la forme de caractère convivial :

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

3. Conversion à l'aide de codePoints ()

Alternativement, nous pouvons utiliser la méthode codePoints () pour obtenir une instance d' IntStream à partir d'un String. 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 substituts 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 l' IntStream retourné au Stream pour l'afficher aux utilisateurs:

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

4. Conversion en un flux de chaînes de caractères uniques

Jusqu'à présent, nous avons pu obtenir un flux de personnages; Que faire si nous voulons un flux de chaînes de caractères uniques à la place?

Comme spécifié précédemment dans l'article, nous utiliserons les méthodes codePoints () ou chars () pour obtenir une instance d' IntStream que nous pouvons maintenant mapper à Stream .

Le processus de mappage implique de convertir d'abord les valeurs entières en leurs équivalents de caractères respectifs.

Ensuite, nous pouvons utiliser String.valueOf () ou Character.toString () pour convertir les caractères en un objet String :

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

5. Conclusion

Dans ce rapide tutoriel, nous apprenons à obtenir un flux de Character à partir d'un objet String en appelant les méthodes codePoints () ou chars () .

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

Comme toujours, des extraits de code peuvent être trouvés sur GitHub.