Guava - pridružite se i podijelite kolekcije

1. Pregled

U ovom uputstvu naučit ćemo kako se koristiti the Stolar i Cjepidlaka u knjižnici Guava. Zbirke ćemo pretvoriti u String pomoću Stolar a String ćemo podijeliti u kolekciju s Cjepidlaka.

2. Pretvori Popis u Niz Koristeći Stolar

Počnimo s jednostavnim primjerom za pridruživanje a Popis u a Niz koristeći Stolar. U sljedećem primjeru pridružujemo se a Popis imena u jedno Niz pomoću zareza "," kao razdvajač:

@Test public void whenConvertListToString_thenConverted () {Imena popisa = Lists.newArrayList ("John", "Jane", "Adam", "Tom"); Rezultat niza = Joiner.on (","). Join (imena); assertEquals (rezultat, "John, Jane, Adam, Tom"); }

3. Pretvori Karta do Niz Koristeći Stolar

Dalje - da vidimo kako koristiti Stolar pretvoriti a Karta do a Niz. U sljedećem primjeru koristimo withKeyValueSeparator () za pridruživanje ključa s njegovom vrijednošću:

@Test public void whenConvertMapToString_thenConverted () {Mapa plata = Maps.newHashMap (); pay.put ("Ivan", 1000); pay.put ("Jane", 1500); Rezultat niza = Joiner.on (",") .withKeyValueSeparator ("=") .join (plaća); assertThat (rezultat, sadržiString ("Ivan = 1000")); assertThat (rezultat, sadržiString ("Jane = 1500")); }

4. Pridružite se ugniježđenim zbirkama

Sada - da vidimo kako spojiti ugniježđene kolekcije u Niz. U sljedećem primjeru pridružujemo rezultat transformacije svakog Popis do a Niz:

@Test public void whenJoinNestedCollections_thenJoined () {Popis ugniježđeno = Lists.newArrayList (Lists.newArrayList ("apple", "banana", "orange"), Lists.newArrayList ("cat", "dog", "bird"), Lists.newArrayList ("John", "Jane "," Adam ")); Rezultat niza = Joiner.on (";"). Join (Iterables.transform (ugniježđena, nova funkcija() {@Override javni niz primjenjuje se (unos popisa) {return Joiner.on ("-"). Join (input); }})); assertThat (rezultat, sadržiString ("jabuka-banana-naranča")); assertThat (rezultat, sadržiString ("mačka-pas-ptica")); assertThat (rezultat, sadržiString ("jabuka-banana-naranča")); }

5. Rukujte nulskim vrijednostima dok koristite Stolar

Sada - pogledajmo različite načine za rukovanje null vrijednostima tijekom upotrebe Joiner-a.

Do preskoči null vrijednosti dok se pridružuje korištenju kolekcije preskočiNulls () kao u sljedećem primjeru:

@Test public void whenConvertListToStringAndSkipNull_thenConverted () {Imena popisa = Lists.newArrayList ("John", null, "Jane", "Adam", "Tom"); Rezultat niza = Joiner.on (","). SkipNulls (). Join (imena); assertEquals (rezultat, "John, Jane, Adam, Tom"); }

Ako ne želite preskočiti null vrijednosti i želite umjesto toga ih zamijenite, koristiti useForNull () kao u sljedećem primjeru:

@Test public void whenUseForNull_thenUsed () {Imena popisa = Lists.newArrayList ("John", null, "Jane", "Adam", "Tom"); Rezultat niza = Joiner.on (","). UseForNull ("bezimeni"). Join (imena); assertEquals (rezultat, "Ivan, bezimeni, Jane, Adam, Tom"); }

Imajte na umu da useForNull () ne mijenja izvorni popis, to utječe samo na izlaz pridruživanja.

6. Stvori Popis Iz Niz Koristeći Cjepidlaka

Sada - da vidimo kako podijeliti a Niz u a Popis. U sljedećem primjeru za razdvajanje ulaza koristimo separator "-" Niz do Popis:

@Test public void whenCreateListFromString_thenCreated () {String input = "jabuka - banana - naranča"; Rezultat popisa = Splitter.on ("-"). TrimResults () .splitToList (input); assertThat (rezultat, sadrži ("jabuka", "banana", "naranča")); }

Imajte na umu da trimResults () uklanja vodeći i prateći razmak iz rezultirajućih podnizova.

7. Stvori Karta Iz Niz Koristeći Cjepidlaka

Dalje - pogledajmo kako stvoriti mapu iz niza pomoću splittera. U sljedećem primjeru koristimo withKeyValueSeparator () podijeliti a Niz u a Karta:

@Test public void whenCreateMapFromString_thenCreated () {String input = "Ivan = prvi, Adam = drugi"; Rezultat karte = Splitter.on (",") .withKeyValueSeparator ("=") .split (input); assertEquals ("prvi", rezultat.get ("Ivan")); assertEquals ("drugi", rezultat.get ("Adam")); }

8. Split Niz S više separatora

Sada - da vidimo kako podijeliti a Niz s više separatora. U sljedećem primjeru koristimo oba "." i "," da podijelimo naše Niz:

@Test javna void whenSplitStringOnMultipleSeparator_thenSplit () {String input = "apple.banana ,, narančasta ,,."; Rezultat popisa = Splitter.onPattern ("[.,]") .OmitEmptyStrings () .splitToList (input); assertThat (rezultat, sadrži ("jabuka", "banana", "naranča")); }

Imajte na umu da omitEmptyStrings () ignorira prazne nizove i ne dodaje ih rezultirajućem Popis.

9. Split a Niz na određenoj duljini

Dalje - pogledajmo razdvajanje a Niz na određenoj duljini. U sljedećem primjeru podijelili smo svoje Niz svaka 3 znaka:

@Test public void whenSplitStringOnSpecificLength_thenSplit () {String input = "Hello world"; Rezultat popisa = Splitter.fixedLength (3) .splitToList (input); assertThat (rezultat, sadrži ("Hel", "lo", "wor", "ld")); }

10. Ograničite podijeljeni rezultat

Konačno - pogledajmo kako ograničiti podijeljeni rezultat. Ako želite Cjepidlaka do prestati dijeliti nakon određenog broja predmeta - koristiti ograničiti() kao u sljedećem primjeru:

@Test public void whenLimitSplitting_thenLimited () {String input = "a, b, c, d, e"; Rezultat popisa = Splitter.on (",") .limit (4) .splitToList (input); assertEquals (4, result.size ()); assertThat (rezultat, sadrži ("a", "b", "c", "d, e")); }

11. Zaključak

U ovom uputstvu ilustrirali smo kako koristiti oba Stolar i Cjepidlaka u Guavi napraviti razne transformacije između zbirki i gudača.

Implementacija svih ovih primjera i isječaka koda možete pronaći u mom projektu gvaub-a Guava - ovo je projekt zasnovan na Eclipseu, pa bi ga trebalo lako uvesti i pokrenuti kakav jest.


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