Convertendo uma lista em string em Java

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.