1. Información general
En este tutorial rápido, cubriremos varias formas de convertir una matriz de caracteres en una cadena en Java.
2. Constructor de cadenas
La Cadena de clase tiene un constructor que acepta un carbón matriz como un argumento:
@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")); }
Esta es una de las maneras más fáciles de convertir un carbón matriz a una cadena . Invoca internamente String # valueOf para crear un objeto String .
3. String.valueOf ()
Y hablando de valueOf (), incluso podemos usarlo directamente:
@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 es otro método que es semánticamente equivalente al método valueOf () pero que tuvo alguna importancia solo en las primeras versiones de Java. A partir de hoy, el método copyValueOf () es redundante y no recomendamos usarlo.
4. StringBuilder 's toString ()
¿Qué pasa si queremos formar una cadena de una serie de Char matrices?
Luego, primero podemos crear una instancia de StringBuilder y usar su método append (char []) para agregar todos los contenidos.
Más tarde, usaremos el método toString () para obtener su representación 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")); }
Podemos optimizar aún más el código anterior creando una instancia del StringBuilder de la longitud exacta que necesitamos.
5. Secuencias de Java 8
Con Arrays.stream (T [] objeto) método, podemos abrir una corriente a través de una matriz de tipo T .
Considerando que tenemos una matriz de caracteres , podemos usar la operación Collectors.joining () para formar una instancia de 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 advertencia con este enfoque es que estamos invocando valueOf () sobre cada elemento de Character , por lo que será bastante lento.
6. guayaba Común Base Joiner
Sin embargo, digamos que la cadena que necesitamos crear es una cadena delimitada. Guayaba nos da un método útil:
@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")); }
Una vez más, tenga en cuenta que el join () método sólo aceptará un carácter matriz y no la primitiva carbón matriz.
7. Conclusión
En este tutorial, exploramos formas de convertir una matriz de caracteres determinada en su representación String en Java.
Como de costumbre, todos los ejemplos de código se pueden encontrar en GitHub.