Guava - Bli med og del samlinger

1. Oversikt

I denne opplæringen vil vi lære å bruke de Snekker og Splitter i Guava-biblioteket. Vi konverterer samlinger til en streng med Snekker og vi deler en streng i en samling med Splitter.

2. Konverter Liste inn i String Ved hjelp av Snekker

La oss starte med et enkelt eksempel for å bli med i Liste inn i en String ved hjelp av Snekker. I det følgende eksemplet blir vi med a Liste av navn til ett String ved å bruke kommaet "," som skilletegn:

@Test offentlig ugyldig nårConvertListToString_thenConverted () {List names = Lists.newArrayList ("John", "Jane", "Adam", "Tom"); Strengresultat = Joiner.on (","). Bli med (navn); assertEquals (resultat, "John, Jane, Adam, Tom"); }

3. Konverter Kart til String Ved hjelp av Snekker

Neste - la oss se hvordan du bruker Snekker å konvertere en Kart til en String. I det følgende eksemplet bruker vi withKeyValueSeparator () for å bli med nøkkelen med verdien:

@Test offentlig ugyldig nårConvertMapToString_thenConverted () {Map lønn = Maps.newHashMap (); lønn.put ("John", 1000); lønn.put ("Jane", 1500); Strengresultat = Joiner.on (",") .withKeyValueSeparator ("="). Sammenføye (lønn); assertThat (resultat, inneholderString ("John = 1000")); assertThat (resultat, inneholderString ("Jane = 1500")); }

4. Bli med på nestede samlinger

La oss nå se hvordan vi kan knytte nestede samlinger til en String. I det følgende eksemplet blir vi med på resultatet av å transformere hver Liste til en String:

@Test offentlig ugyldig nårJoinNestedCollections_thenJoined () {List nestet = Lists.newArrayList (Lists.newArrayList ("apple", "banana", "orange"), Lists.newArrayList ("cat", "dog", "bird"), Lists.newArrayList ("John", "Jane "," Adam ")); String result = Joiner.on (";"). Join (Iterables.transform (nestet, ny funksjon() {@Override public String gjelder (listeinngang) {return Joiner.on ("-"). Bli med (input); }})); assertThat (resultat, inneholderString ("eple-banan-oransje")); assertThat (resultat, inneholderString ("katt-hund-fugl")); assertThat (resultat, inneholderString ("eple-banan-oransje")); }

5. Håndter nullverdier mens du bruker Snekker

La oss nå se forskjellige måter å håndtere nullverdier mens du bruker snekker.

Til hopp over nullverdier mens du blir med på samlebruk skipNulls () som i følgende eksempel:

@Test offentlig ugyldig nårConvertListToStringAndSkipNull_thenConverted () {List names = Lists.newArrayList ("John", null, "Jane", "Adam", "Tom"); String result = Joiner.on (","). SkipNulls (). Join (names); assertEquals (resultat, "John, Jane, Adam, Tom"); }

Hvis du ikke vil hoppe over nullverdier og vil erstatt dem i stedet, bruk useForNull () som i følgende eksempel:

@Test offentlig ugyldig nårUseForNull_thenUsed () {List names = Lists.newArrayList ("John", null, "Jane", "Adam", "Tom"); Strengresultat = Joiner.on (","). UseForNull ("navnløs"). Bli med (navn); assertEquals (resultat, "John, navnløs, Jane, Adam, Tom"); }

Noter det useForNull () endrer ikke den opprinnelige listen, det påvirker bare utdataene fra join.

6. Opprett Liste Fra String Ved hjelp av Splitter

Nå - la oss se hvordan vi deler en String inn i en Liste. I det følgende eksemplet bruker vi "-" separator for å dele inngangen String til Liste:

@Test offentlig ugyldig nårCreateListFromString_thenCreated () {String input = "apple - banana - orange"; Listeresultat = Splitter.on ("-"). TrimResults () .splitToList (input); assertThat (resultatet inneholder ("eple", "banan", "oransje")); }

Noter det trimResults () fjerner det ledende og etterfølgende hvite området fra de resulterende underlagene.

7. Opprett Kart Fra String Ved hjelp av Splitter

Neste - la oss se hvordan lage kart fra streng ved hjelp av splitter. I det følgende eksemplet bruker vi withKeyValueSeparator () å dele en String inn i en Kart:

@Test offentlig ugyldig nårCreateMapFromString_thenCreated () {String input = "John = first, Adam = second"; Kartresultat = Splitter.on (",") .medKeyValueSeparator ("=") .split (input); assertEquals ("første", result.get ("John")); assertEquals ("andre", result.get ("Adam")); }

8. Split String Med flere separatorer

Nå - la oss se hvordan vi deler en String med flere separatorer. I det følgende eksemplet bruker vi begge “.” og “,” for å dele vår String:

@Test offentlig ugyldig nårSplitStringOnMultipleSeparator_thenSplit () {String input = "apple.banana ,, orange ,,."; Listresultat = Splitter.onPattern ("[.,]") .OmitEmptyStrings () .splitToList (input); assertThat (resultatet inneholder ("eple", "banan", "oransje")); }

Noter det omitEmptyStrings () ignorerer tomme strenger og legger dem ikke til resultatet Liste.

9. Del en String ved spesifikk lengde

Neste - la oss ta en titt på splitting a String på spesifikk lengde. I det følgende eksemplet deler vi vår String hver 3. karakter:

@Test offentlig ugyldig nårSplitStringOnSpecificLength_thenSplit () {String input = "Hello world"; Listeresultat = Splitter.fixedLength (3) .splitToList (input); assertThat (resultat, inneholder ("Hel", "lo", "wor", "ld")); }

10. Begrens delt resultat

Til slutt - la oss se hvordan du kan begrense delt resultat. Hvis du vil ha Splitter til slutte å dele etter spesifikt antall gjenstander - bruk grense() som i følgende eksempel:

@Test offentlig ugyldig nårLimitSplitting_thenLimited () {String input = "a, b, c, d, e"; Listeresultat = Splitter.on (",") .limit (4) .splitToList (input); assertEquals (4, result.size ()); assertThat (resultatet inneholder ("a", "b", "c", "d, e")); }

11. Konklusjon

I denne opplæringen illustrerte vi hvordan du bruker begge Snekker og Splitter i Guava for å gjøre en rekke transformasjoner mellom samlinger og strenger.

Implementeringen av alle disse eksemplene og kodebiter kan du finne i mitt Guava github-prosjekt - dette er et formørkelsesbasert prosjekt, så det skal være enkelt å importere og kjøre som det er.


$config[zx-auto] not found$config[zx-overlay] not found