Hoje vamos explorar como converter um array de Strings em Java para uma única String. Às vezes, precisamos realizar essa conversão para atender a requisitos específicos. Por exemplo; queremos registrar o conteúdo do array ou precisamos converter os valores do array de Strings para uma única String e invocar outros métodos.
Array de Strings em Java para String
Na maioria das vezes, invocamos o método toString()
de um objeto para obter sua representação como String. Vamos ver o que acontece quando chamamos o método toString()
em um array de Strings em Java.
package com.journaldev.util;
public class JavaStringArrayToString {
public static void main(String[] args) {
String[] strArr = new String[] {"1","2","3"};
String str = strArr.toString();
System.out.println("Java String array to String = "+str);
}
}
A imagem abaixo mostra a saída produzida pelo programa acima. A razão para a saída acima é porque a chamada de
toString()
no array vai para a superclasse Object, onde está implementada da seguinte forma.
public String toString() {
return getClass().getName() + "@" + Integer.toHexString(hashCode());
}
Exemplo de Conversão de Array de Strings em Java para String
Então, como converter uma matriz de strings em uma única string em Java. Podemos usar o método Arrays.toString
que invoca o método toString() em elementos individuais e usar StringBuilder para criar a string.
public static String toString(Object[] a) {
if (a == null)
return "null";
int iMax = a.length - 1;
if (iMax == -1)
return "[]";
StringBuilder b = new StringBuilder();
b.append('[');
for (int i = 0; ; i++) {
b.append(String.valueOf(a[i]));
if (i == iMax)
return b.append(']').toString();
b.append(", ");
}
}
Também podemos criar nosso próprio método para converter uma matriz de strings em uma única string se tivermos alguns requisitos de formato específicos. Abaixo está um programa simples mostrando esses métodos em ação e a saída produzida.
package com.journaldev.util;
import java.util.Arrays;
public class JavaStringArrayToString {
public static void main(String[] args) {
String[] strArr = new String[] { "1", "2", "3" };
String str = Arrays.toString(strArr);
System.out.println("Java String array to String = " + str);
str = convertStringArrayToString(strArr, ",");
System.out.println("Convert Java String array to String = " + str);
}
private static String convertStringArrayToString(String[] strArr, String delimiter) {
StringBuilder sb = new StringBuilder();
for (String str : strArr)
sb.append(str).append(delimiter);
return sb.substring(0, sb.length() - 1);
}
}
Então, se usarmos o método
toString()
da matriz, ele retorna dados inúteis. A classe Java Arrays fornece toString(Object[] objArr)
que itera sobre os elementos da matriz e usa sua implementação de toString()
para retornar a representação da string da matriz. É por isso que quando usamos essa função, podemos ver que ela está imprimindo o conteúdo da matriz e pode ser usada para fins de registro. Se você quiser combinar todos os elementos de string na matriz de strings com algum delimitador específico, então você pode usar o método convertStringArrayToString(String[] strArr, String delimiter)
que retorna a string após combiná-los.
Exemplo de Conversão de Matriz para String em Java
Agora vamos estender nosso exemplo de array de String para utilizar com quaisquer outras classes personalizadas. Aqui está a implementação.
package com.journaldev.util;
import java.util.Arrays;
public class JavaArrayToString {
public static void main(String[] args) {
A[] arr = { new A("1"), new A("2"), new A("3") };
// método toString() padrão
System.out.println(arr.toString());
// usando Arrays.toString() para imprimir o conteúdo do array de objetos
System.out.println(Arrays.toString(arr));
// convertendo Array de Objetos para String
System.out.println(convertObjectArrayToString(arr, ","));
}
private static String convertObjectArrayToString(Object[] arr, String delimiter) {
StringBuilder sb = new StringBuilder();
for (Object obj : arr)
sb.append(obj.toString()).append(delimiter);
return sb.substring(0, sb.length() - 1);
}
}
class A {
private String name;
public A(String name) {
this.name = name;
}
@Override
public String toString() {
System.out.println("A toString() method called!!");
return this.name;
}
}
A saída produzida pelo programa de exemplo em Java que converte array para String é;
[Lcom.journaldev.util.A;@7852e922
A toString() method called!!
A toString() method called!!
A toString() method called!!
[1, 2, 3]
A toString() method called!!
A toString() method called!!
A toString() method called!!
1,2,3
Então, vimos como converter um array de String em Java para String e depois estendemos para usar com objetos personalizados. Isso é tudo para a conversão de array em Java para String.
Você pode conferir mais exemplos em Java em nosso Repositório no GitHub.
Referência: Documentação da API Java Arrays toString
Source:
https://www.digitalocean.com/community/tutorials/java-string-array-to-string