Guava - Deltag og del samlinger

1. Oversigt

I denne vejledning lærer vi at bruge det Snedker og Splitter i Guava-biblioteket. Vi konverterer samlinger til en streng med Snedker og vi deler en streng i en samling med Splitter.

2. Konverter Liste ind i Snor Ved brug af Snedker

Lad os starte med et simpelt eksempel for at deltage i Liste ind i en Snor ved brug af Snedker. I det følgende eksempel slutter vi os til a Liste af navne til et Snor ved hjælp af kommaet "," som en separator:

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

3. Konverter Kort til Snor Ved brug af Snedker

Næste - lad os se, hvordan du bruger Snedker at konvertere en Kort til en Snor. I det følgende eksempel bruger vi withKeyValueSeparator () at slutte sig til nøglen med dens værdi:

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

4. Deltag i indlejrede samlinger

Lad os nu se, hvordan vi kan slutte indlejrede samlinger til en Snor. I det følgende eksempel slutter vi os til resultatet af at transformere hver Liste til en Snor:

@Test offentlig ugyldig nårJoinNestedCollections_thenJoined () {List nestet = Lists.newArrayList (Lists.newArrayList ("æble", "banan", "orange"), Lists.newArrayList ("kat", "hund", "fugl"), Lists.newArrayList ("John", "Jane "," Adam ")); String result = Joiner.on (";"). Join (Iterables.transform (nestet, ny funktion() {@Override public String apply (List input) {return Joiner.on ("-"). Join (input); }})); assertThat (resultat, indeholderString ("æble-banan-orange")); assertThat (resultat, indeholderString ("kat-hund-fugl")); assertThat (resultat, indeholderString ("æble-banan-orange")); }

5. Håndter nulværdier under brug Snedker

Lad os nu se forskellige måder at håndtere nulværdier på, når du bruger Joiner.

Til spring nulværdier over mens du tilmelder dig brug af indsamling 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 springe nulværdier over og vil udskift dem i stedet, brug 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"). Join (navne); assertEquals (resultat, "John, navnløs, Jane, Adam, Tom"); }

Noter det useForNull () ændrer ikke den oprindelige liste, det påvirker kun output fra sammenkædningen.

6. Opret Liste Fra Snor Ved brug af Splitter

Lad os nu se, hvordan man deler en Snor ind i en Liste. I det følgende eksempel bruger vi “-” separator til at opdele input Snor til Liste:

@Test offentlig ugyldig nårCreateListFromString_thenCreated () {String input = "æble - banan - orange"; Listeresultat = Splitter.on ("-"). TrimResults () .splitToList (input); assertThat (resultat, indeholder ("æble", "banan", "orange")); }

Noter det trimResults () fjerner det forreste og bageste hvide område fra de resulterende underlag.

7. Opret Kort Fra Snor Ved brug af Splitter

Næste - lad os se, hvordan du opretter kort fra streng ved hjælp af splitter. I det følgende eksempel bruger vi withKeyValueSeparator () at opdele en Snor ind i en Kort:

@Test offentligt ugyldigt nårCreateMapFromString_thenCreated () {String input = "John = first, Adam = second"; Kortresultat = Splitter.on (",") .withKeyValueSeparator ("=") .split (input); assertEquals ("første", result.get ("John")); assertEquals ("anden", result.get ("Adam")); }

8. Opdel Snor Med flere separatorer

Lad os nu se, hvordan man deler en Snor med flere separatorer. I det følgende eksempel bruger vi begge “.” og “,” for at opdele vores Snor:

@Test offentlig ugyldig nårSplitStringOnMultipleSeparator_thenSplit () {String input = "apple.banana ,, orange ,,."; Listeresultat = Splitter.onPattern ("[.,]") .OmitEmptyStrings () .splitToList (input); assertThat (resultat, indeholder ("æble", "banan", "orange")); }

Noter det omitEmptyStrings () ignorerer tomme strenge og føjer dem ikke til den resulterende Liste.

9. Opdel en Snor ved specifik længde

Næste - lad os se på opdeling af a Snor på specifik længde. I det følgende eksempel deler vi vores Snor hver 3. karakter:

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

10. Begræns splitresultatet

Endelig - lad os se, hvordan du begrænser splitresultatet. Hvis du vil have Splitter til stop opdeling efter specifikt antal varer - brug begrænse() som i følgende eksempel:

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

11. Konklusion

I denne vejledning illustrerede vi, hvordan du bruger begge Snedker og Splitter i Guava for at lave forskellige transformationer mellem samlinger og strygere.

Implementeringen af ​​alle disse eksempler og kodestykker kan findes i mit Guava github-projekt - dette er et Eclipse-baseret projekt, så det skal være let at importere og køre som det er.


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