Converti array di caratteri in stringa in Java

1. Panoramica

In questo rapido tutorial, tratteremo vari modi per convertire un array di caratteri in una stringa in Java.

2. String Constructor

La classe String ha un costruttore che accetta un array di caratteri come argomento:

@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")); }

Questo è uno dei modi più semplici per convertire un array di caratteri in una stringa . Richiama internamente String # valueOf per creare un oggetto String .

3. String.valueOf ()

E a proposito di valueOf (), possiamo anche usarlo direttamente:

@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")); }

La stringa # copyValueOf è un altro metodo semanticamente equivalente al metodo valueOf () , ma ha avuto un significato solo nelle prime versioni di Java. Ad oggi, il metodo copyValueOf () è ridondante e non è consigliabile utilizzarlo.

4. StringBuilder s' toString ()

E se volessimo formare una stringa da un array di array di caratteri ?

Quindi, possiamo prima creare un'istanza di StringBuilder e utilizzare il suo metodo append (char []) per aggiungere tutti i contenuti insieme.

Successivamente, useremo il metodo toString () per ottenere la sua rappresentazione 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")); }

Possiamo ulteriormente ottimizzare il codice precedente istanziando lo StringBuilder della lunghezza esatta di cui abbiamo bisogno.

5. Java 8 Streams

Con Arrays.stream (T [] oggetto) metodo, si può aprire un flusso su un array di tipo T .

Considerando che abbiamo un array di caratteri , possiamo usare l' operazione Collectors.joining () per formare un'istanza 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")); }

L'avvertenza con questo approccio è che stiamo invocando valueOf () su ogni elemento Character e quindi sarà piuttosto lento.

6. Guava Common Base Joiner

Diciamo però che la stringa che dobbiamo creare è una stringa delimitata. Guava ci offre un metodo pratico:

@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")); }

Di nuovo, nota che il metodo join () accetterà solo un array di caratteri e non l' array di caratteri primitivo .

7. Conclusione

In questo tutorial, abbiamo esplorato i modi per convertire un dato array di caratteri nella sua rappresentazione String in Java.

Come al solito, tutti gli esempi di codice possono essere trovati su GitHub.