Convertendo uma lista em string em Java
1. Introdução
Neste artigo rápido, veremos como converterList de elementos emString. Isso pode ser útil em certos cenários, como imprimir o conteúdo no console em um formato legível por humanos para inspeção / depuração.
2. toString() padrão em aList
Uma das maneiras mais simples é simplesmente chamar o métodotoString() noList:
@Test
public void whenListToString_thenPrintDefault() {
List intLIst = Arrays.asList(1, 2, 3);
System.out.println(intLIst);
}
Resultado:
[1, 2, 3]
Essa técnica utiliza internamente o métodotoString() do tipo dos elementos emList. Em nosso caso, estamos usando o tipoInteger, que possui uma implementação adequada do métodotoString().
Se estivermos usando nosso tipo personalizado, digamos,Person, precisamos ter certeza de que a classePerson substitui o métodotoString() e não depende da implementação padrão. Se o métodotoString() não for implementado corretamente, você poderá obter resultados inesperados:
[[email protected],
[email protected],
[email protected]]
3. Implementação personalizada usandoCollectors
Frequentemente, talvez seja necessário exibir a saída em um formato diferente.
Em comparação com o exemplo anterior, vamos substituir a vírgula (,) por um hífen (-) e os colchetes ([,]) por um conjunto de chaves (\ {,}):
@Test
public void whenCollectorsJoining_thenPrintCustom() {
List intList = Arrays.asList(1, 2, 3);
String result = intList.stream()
.map(n -> String.valueOf(n))
.collect(Collectors.joining("-", "{", "}"));
System.out.println(result);
}
Resultado:
{1-2-3}
O métodoCollectors.joining() requer umCharSequence, então precisamosmapaInteger paraString. A mesma idéia pode ser utilizada no caso de qualquer outra classe, mesmo quando não temos acesso ao código dessa classe.
4. Usando uma biblioteca externa
Veremos agora o uso da classeStringUtils do Apache Commons para obter resultados semelhantes.
4.1. Dependência do Maven
org.apache.commons
commons-lang3
3.6
A versão mais recente da dependência pode ser encontradahere.
4.2. Implementação
A implementação é literalmente uma única chamada de método:
@Test
public void whenStringUtilsJoin_thenPrintCustom() {
List intList = Arrays.asList(1, 2, 3);
System.out.println(StringUtils.join(intList, "|"));
}
Resultado:
1|2|3
Novamente, essa implementação é internamente dependente da implementaçãotoString() do tipo que estamos considerando.
5. Conclusão
Neste artigo, vimos como é fácil converter aList emString usando diferentes técnicas.
Como sempre, o código-fonte completo deste artigo pode ser encontradoover on GitHub.