Conversione di un elenco in stringa in Java

1. Introduzione

In questo rapido articolo, daremo un'occhiata a come convertire un elenco di elementi in una stringa . Ciò potrebbe essere utile in alcuni scenari come la stampa del contenuto sulla console in un formato leggibile dall'uomo per l'ispezione / il debug.

2. Standard toString () in un elenco

Uno dei modi più semplici è chiamare semplicemente il metodo toString () nell'elenco :

@Test public void whenListToString_thenPrintDefault() { List intLIst = Arrays.asList(1, 2, 3); System.out.println(intLIst); }

Produzione:

[1, 2, 3]

Questa tecnica utilizza internamente il metodo toString () del tipo degli elementi all'interno dell'elenco . Nel nostro caso, stiamo usando il tipo Integer che ha una corretta implementazione del metodo toString () .

Se stiamo usando il nostro tipo personalizzato, ad esempio Person , allora dobbiamo assicurarci che la classe Person sovrascriva il metodo toString () e non si basa sull'implementazione predefinita. Se il metodo toString () non è implementato correttamente, potresti ottenere risultati imprevisti:

[[email protected], [email protected], [email protected]]

3. Implementazione personalizzata tramite servizi di raccolta

Spesso, potrebbe essere necessario visualizzare l'output in un formato diverso.

Rispetto all'esempio precedente, sostituiamo la virgola (,) con un trattino (-) e le parentesi quadre ([,]) con un insieme di parentesi graffe ({,}):

@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); }

Produzione:

{1-2-3}

Il Collectors.joining () metodo richiede un CharSequence , quindi abbiamo bisogno di mappare l' intero a stringa . La stessa idea può essere utilizzata in caso di qualsiasi altra classe anche quando non abbiamo accesso al codice di quella classe.

4. Utilizzo di una libreria esterna

Vedremo ora l'utilizzo della classe StringUtils di Apache Commons per ottenere risultati simili.

4.1. Dipendenza da Maven

 org.apache.commons commons-lang3 3.6 

L'ultima versione della dipendenza può essere trovata qui.

4.2. Implementazione

L'implementazione è letteralmente una singola chiamata di metodo:

@Test public void whenStringUtilsJoin_thenPrintCustom() ")); 

Produzione:

1|2|3

Di nuovo, questa implementazione dipende internamente dall'implementazione toString () del tipo che stiamo considerando.

5. conclusione

In questo articolo, abbiamo visto quanto sia facile convertire una lista in una stringa usando diverse tecniche.

Come sempre, il codice sorgente completo di questo articolo può essere trovato su GitHub.