Converter matriz de caracteres em string em Java
1. Visão geral
Neste tutorial rápido, cobriremos várias maneiras de converter uma matriz de caracteres emString em Java.
2. Construtor String
A classeString tem umconstructor that accepts a char array as an 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("example"));
}
Esta é uma das maneiras mais fáceis de converter uma matrizchar emString. Ele invoca internamenteString#valueOf para criar um objetoString.
3. String.valueOf()
E por falar emvalueOf(),, podemos até mesmo usá-lo diretamente:
@Test
public void whenStringValueOf_thenOK() {
final char[] charArray = { 'b', 'a', 'e', 'l', 'd', 'u', 'n', 'g' };
String string = String.valueOf(charArray);
assertThat(string, is("example"));
}
String#copyValueOf é outro método que é semanticamente equivalente ao métodovalueOf(), mas teve qualquer significado apenas nas primeiras versões do Java. A partir de hoje,the copyValueOf() method is redundant and we don’t recommend using it.
4. StringBuilder'stoString()
E se quisermos formar umString a partir de uma matriz de matrizeschar?
Então, podemos primeiro instanciar uma instânciaStringBuilder e usar seu métodoappend(char[]) para anexar todos os conteúdos.
Posteriormente, usaremos o método toString() para obter sua representaçãoString:
@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("example"));
}
Podemos otimizar ainda mais o código acima instanciandoStringBuilder do comprimento exato de que precisamos.
5. Java 8 Streams
Com o métodoArrays.stream(T[] object), podemos abrir um fluxo sobre um array do tipoT.
Considerando que temos uma matrizCharacter,we can use the Collectors.joining() operation to form a String instance:
@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("example"));
}
A ressalva com essa abordagem é que estamos invocandovalueOf() sobre cada elementoCharacter e, portanto, será muito lento.
6. Base comum de goiabaJoiner
Digamos que a string que precisamos criar seja uma string delimitada. Goiaba nos dá um 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"));
}
Novamente, observe quethe join() method will only accept a Character array and not the primitive char array.
7. Conclusão
Neste tutorial, exploramos maneiras de converter um determinado array de caracteres em sua representaçãoString em Java.
Como de costume, todos os exemplos de código podem ser encontradosover on GitHub.