1. Introducción
En este artículo rápido, veremos cómo convertir una lista de elementos en una cadena . Esto puede resultar útil en determinados escenarios, como imprimir el contenido en la consola en un formato legible por humanos para su inspección / depuración.
2. Standard toString () en una lista
Una de las formas más sencillas es simplemente llamar al método toString () en la Lista :
@Test public void whenListToString_thenPrintDefault() { List intLIst = Arrays.asList(1, 2, 3); System.out.println(intLIst); }
Salida:
[1, 2, 3]
Esta técnica utiliza internamente el método toString () del tipo de elementos dentro de la Lista . En nuestro caso, estamos usando el tipo Integer que tiene una implementación adecuada del método toString () .
Si estamos usando nuestro tipo personalizado, digamos, Person , entonces debemos asegurarnos de que la clase Person anule el método toString () y no dependa de la implementación predeterminada. Si el método toString () no se implementa correctamente, es posible que obtenga resultados inesperados:
[[email protected], [email protected], [email protected]]
3. Implementación personalizada mediante recopiladores
A menudo, es posible que necesitemos mostrar la salida en un formato diferente.
En comparación con el ejemplo anterior, reemplacemos la coma (,) con un guión (-) y los corchetes ([,]) con un conjunto de llaves ({,}):
@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); }
Salida:
{1-2-3}
El método Collectors.joining () requiere una CharSequence , por lo que necesitamos mapear el Integer a String . La misma idea se puede utilizar en el caso de cualquier otra clase, incluso cuando no tengamos acceso al código de esa clase.
4. Usando una biblioteca externa
Ahora veremos el uso de la clase StringUtils de Apache Commons para lograr resultados similares.
4.1. Dependencia de Maven
org.apache.commons commons-lang3 3.6
La última versión de la dependencia se puede encontrar aquí.
4.2. Implementación
La implementación es literalmente una llamada a un solo método:
@Test public void whenStringUtilsJoin_thenPrintCustom() "));
Salida:
1|2|3
Nuevamente, esta implementación depende internamente de la implementación toString () del tipo que estamos considerando.
5. Conclusión
En este artículo, vimos lo fácil que es convertir una Lista en una Cadena utilizando diferentes técnicas.
Como siempre, el código fuente completo de este artículo se puede encontrar en GitHub.