Conversões de matriz para string

Conversões de matriz para string

1. Visão geral

Neste breve tutorial, analisaremos a conversão de uma matriz de seqüências de caracteres ou números inteiros em uma sequência e vice-versa.

Podemos conseguir isso com classes de utilitários vanilla Java e Java de bibliotecas comumente usadas.

2. Converter matriz em string

Às vezes, precisamos converter uma matriz de cadeias ou números inteiros em uma cadeia, mas, infelizmente, não há um método direto para realizar essa conversão.

A implementação padrão do métodotoString() em uma matriz retorna algo comoLjava.lang.String;@74a10858, que apenas nos informa sobre o tipo do objeto e o código hash.

No entanto, a classe de utilitáriojava.util.Arrays suporta manipulação de array e string, incluindo um métodotoString() para arrays.

Arrays.toString() returns a string with the content of the input array. A nova string criada é uma lista delimitada por vírgulas dos elementos da matriz, entre colchetes (“[]”):

String[] strArray = { "one", "two", "three" };
String joinedString = Arrays.toString(strArray);
assertEquals("[one, two, three]", joinedString);
int[] intArray = { 1,2,3,4,5 };
joinedString = Arrays.toString(intArray);
assertEquals("[1, 2, 3, 4, 5]", joinedString);

E, embora seja ótimo que o métodoArrays.toString(int[]) abotoe essa tarefa tão bem para nós, vamos compará-lo com diferentes métodos que podemos implementar por conta própria.

2.1. StringBuilder.append()

Para começar, vamos ver como fazer essa conversão comStringBuilder.append():

String[] strArray = { "Convert", "Array", "With", "Java" };
StringBuilder stringBuilder = new StringBuilder();
for (int i = 0; i < strArray.length; i++) {
    stringBuilder.append(strArray[i]);
}
String joinedString = stringBuilder.toString();
assertEquals("ConvertArrayWithJava", joinedString);

Além disso, para converter uma matriz de inteiros, podemos usar a mesma abordagem, mas, em vez disso, chamarInteger.valueOf(intArray[i]) ao anexar ao nossoStringBuilder.

2.2. API Java Streams

Java 8 e superior oferecem o métodoString.join() que produz uma nova string juntando elementos e separando-os com o delimitador especificado, em nosso caso apenas string vazia:

String joinedString = String.join("", new String[]{ "Convert", "With", "Java", "Streams" });
assertEquals("ConvertWithJavaStreams", joinedString);

Além disso, podemos usar o métodoCollectors.joining() da API Java Streams que une strings deStream na mesma ordem de sua matriz de origem:

String joinedString = Arrays
    .stream(new String[]{ "Convert", "With", "Java", "Streams" })
    .collect(Collectors.joining());
assertEquals("ConvertWithJavaStreams", joinedString);

2.3. StringUtils.join()

EApache Commons Lang nunca deve ser deixado de fora de tarefas como essas.

A classeStringUtils tem vários métodosStringUtils.join() que podem ser usados ​​para alterar uma matriz de strings em uma única string:

String joinedString = StringUtils.join(new String[]{ "Convert", "With", "Apache", "Commons" });
assertEquals("ConvertWithApacheCommons", joinedString);

2.4. Joiner.join()

E para não ficar para trás,Guava acomoda o mesmo com sua classeJoiner . O sclassJoiner oferece uma API fluente e vários métodos auxiliares para juntar dados.

Por exemplo, podemos adicionar um delimitador ou pular valores nulos:

String joinedString = Joiner.on("")
        .skipNulls()
        .join(new String[]{ "Convert", "With", "Guava", null });
assertEquals("ConvertWithGuava", joinedString);

3. Converter seqüência de caracteres em matriz de seqüências de caracteres

Da mesma forma, às vezes precisamos dividir uma string em um array que contém algum subconjunto de string de entrada dividido pelo delimitador especificado, vamos ver como podemos fazer isso também.

3.1. String.split()

Em primeiro lugar, vamos começar dividindo os espaços em branco usando o métodoString.split() sem um delimitador:

String[] strArray = "loremipsum".split("");

Qual produz:

["l", "o", "r", "e", "m", "i", "p", "s", "u", "m"]

3.2. StringUtils.split()

Em segundo lugar, vamos olhar novamente para a classeStringUtils da biblioteca Commons Lang do Apache.

Entre muitos métodos nulos seguros em objetos string, podemos encontrarStringUtils.split(). Por padrão, ele assume um delimitador de espaço em branco:

String[] splitted = StringUtils.split("lorem ipsum dolor sit amet");

O que resulta em:

["lorem", "ipsum", "dolor", "sit", "amet"]

Mas também podemos fornecer um delimitador, se quisermos.

3.3. Splitter.split()

Finalmente, também podemos usarGuava com sua API fluenteSplitter:

List resultList = Splitter.on(' ')
    .trimResults()
    .omitEmptyStrings()
    .splitToList("lorem ipsum dolor sit amet");
String[] strArray = resultList.toArray(new String[0]);

O que gera:

["lorem", "ipsum", "dolor", "sit", "amet"]

4. Conclusão

Neste artigo, ilustramos como converter uma matriz em string e vice-versa usando Java principal e bibliotecas de utilitários populares.

Claro, a implementação de todos esses exemplos e fragmentos de código pode ser encontradaover on GitHub.