Konvertere en liste til streng i Java

1. Introduksjon

I denne raske artikkelen vil vi se på hvordan du konverterer en Liste av elementer til en String. Dette kan være nyttig i visse scenarier, for eksempel å skrive ut innholdet til konsollen i en lesbar form for inspeksjon / feilsøking.

2. Standard toString () på en Liste

En av de enkleste måtene er å bare ringe toString () metoden på Liste:

@Test offentlig ugyldig nårListToString_thenPrintDefault () {List intLIst = Arrays.asList (1, 2, 3); System.out.println (intLIst); }

Produksjon:

[1, 2, 3]

Denne teknikken bruker internt toString () metoden av typen elementer i Liste. I vårt tilfelle bruker vi Heltall type som har en riktig implementering av toString () metode.

Hvis vi bruker vår tilpassede type, si, Person, så må vi sørge for at Person klasse overstyrer toString () metoden og stoler ikke på standardimplementeringen. Hvis den toString () metoden ikke er riktig implementert, kan du få uventede resultater:

[[e-postbeskyttet], [e-postbeskyttet], [e-postbeskyttet]]

3. Egendefinert implementering ved hjelp av Samlere

Ofte trenger vi kanskje å vise utdataene i et annet format.

Sammenlignet med forrige eksempel, la oss erstatte komma (,) med bindestrek (-) og firkantede parenteser ([,]) med et sett med krøllete bukseseler ({,}):

@Test offentlig ugyldig når CollectorsJoining_thenPrintCustom () {List intList = Arrays.asList (1, 2, 3); String result = intList.stream () .map (n -> String.valueOf (n)) .collect (Collectors.joining ("-", "{", "}")); System.out.println (resultat); }

Produksjon:

{1-2-3}

De Collectors.joining () metoden krever en CharSequence, så vi må kart de Heltall til String. Den samme ideen kan brukes i tilfelle andre klasser, selv når vi ikke har tilgang til koden til den klassen.

4. Bruke et eksternt bibliotek

Vi ser nå bruken av Apache Commons ' StringUtils klasse for å oppnå lignende resultater.

4.1. Maven avhengighet

 org.apache.commons commons-lang3 3.6 

Den siste versjonen av avhengigheten finner du her.

4.2. Gjennomføring

Implementeringen er bokstavelig talt en enkelt metodeanrop:

@Test offentlig ugyldig nårStringUtilsJoin_thenPrintCustom () ")); 

Produksjon:

1|2|3

Igjen er denne implementeringen internt avhengig av toString () implementering av typen vi vurderer.

5. Konklusjon

I denne artikkelen så vi hvor enkelt det er å konvertere en Liste til en String ved hjelp av forskjellige teknikker.

Som alltid kan hele kildekoden for denne artikkelen finnes på GitHub.