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.