Convertir un tableau de caractères en chaîne en Java

1. Vue d'ensemble

Dans ce rapide didacticiel, nous aborderons différentes manières de convertir un tableau de caractères en chaîne en Java.

2. Constructeur de chaînes

La classe String a un constructeur qui accepte un tableau char comme argument:

@Test public void whenStringConstructor_thenOK() { final char[] charArray = { 'b', 'a', 'e', 'l', 'd', 'u', 'n', 'g' }; String string = new String(charArray); assertThat(string, is("baeldung")); }

Ceci est l' une des façons les plus simples de la conversion d' un omble chevalier tableau à une chaîne . Il appelle en interne String # valueOf pour créer un objet String .

3. String.valueOf ()

Et en parlant de valueOf (), on peut même l'utiliser directement:

@Test public void whenStringValueOf_thenOK() { final char[] charArray = { 'b', 'a', 'e', 'l', 'd', 'u', 'n', 'g' }; String string = String.valueOf(charArray); assertThat(string, is("baeldung")); }

String # copyValueOf est une autre méthode sémantiquement équivalente à la méthode valueOf () mais qui n'avait d'importance que dans quelques premières versions de Java. À partir d'aujourd'hui, la méthode copyValueOf () est redondante et nous ne recommandons pas de l'utiliser.

4. StringBuilder de toString ()

Que faire si nous voulons former une chaîne à partir d' un tableau de type char tableaux?

Ensuite, nous pouvons d'abord instancier une instance de StringBuilder et utiliser sa méthode append (char []) pour ajouter tous les contenus ensemble.

Plus tard, nous utiliserons la méthode toString () pour obtenir sa représentation String :

@Test public void whenStringBuilder_thenOK() { final char[][] arrayOfCharArray = { { 'b', 'a' }, { 'e', 'l', 'd', 'u' }, { 'n', 'g' } }; StringBuilder sb = new StringBuilder(); for (char[] subArray : arrayOfCharArray) { sb.append(subArray); } assertThat(sb.toString(), is("baeldung")); }

Nous pouvons optimiser davantage le code ci-dessus en instanciant le StringBuilder de la longueur exacte dont nous avons besoin.

5. Flux Java 8

Avec Arrays.stream (objet T []) procédé, on peut ouvrir un flux sur un tableau de type T .

Considérant que nous avons un tableau Character , nous pouvons utiliser l' opération Collectors.joining () pour former une instance String :

@Test public void whenStreamCollectors_thenOK() { final Character[] charArray = { 'b', 'a', 'e', 'l', 'd', 'u', 'n', 'g' }; Stream charStream = Arrays.stream(charArray); String string = charStream.map(String::valueOf).collect(Collectors.joining()); assertThat(string, is("baeldung")); }

La mise en garde avec cette approche est que nous invoquons la valeur valueOf () sur chaque élément Character et que ce sera donc assez lent.

6. Goyave base commune Joiner

Disons cependant que la chaîne que nous devons créer est une chaîne délimitée. La goyave nous donne une méthode pratique:

@Test public void whenGuavaCommonBaseJoiners_thenOK() { final Character[] charArray = { 'b', 'a', 'e', 'l', 'd', 'u', 'n', 'g' }; String string = Joiner.on("|").join(charArray); assertThat(string, is("b|a|e|l|d|u|n|g")); }

Encore une fois, notez que la méthode join () n'acceptera qu'un tableau Character et non le tableau char primitif .

7. Conclusion

Dans ce didacticiel, nous avons exploré les moyens de convertir un tableau de caractères donné en sa représentation String en Java.

Comme d'habitude, tous les exemples de code peuvent être trouvés sur GitHub.