Guava - pripojte sa a rozdeľte zbierky

1. Prehľad

V tomto výučbe sa naučíme používať the Stolár a Rozdeľovač v knižnici Guava. Zbierky prevedieme na reťazec s Stolár a rozdelíme reťazec do kolekcie pomocou Rozdeľovač.

2. Konvertovať Zoznam do String Použitím Stolár

Začnime jednoduchým príkladom spojenia a Zoznam do a String použitím Stolár. V nasledujúcom príklade sa pripojíme k a Zoznam mien do jedného String pomocou čiarky „,“ ako oddeľovača:

@Test public void whenConvertListToString_thenConverted () {List names = Lists.newArrayList ("John", "Jane", "Adam", "Tom"); Výsledok reťazca = Joiner.on (","). Join (names); assertEquals (výsledok, „John, Jane, Adam, Tom“); }

3. Konvertovať Mapa do String Použitím Stolár

Ďalej - pozrime sa, ako sa používa Stolár previesť a Mapa do a String. V nasledujúcom príklade používame withKeyValueSeparator () spojiť kľúč s jeho hodnotou:

@Test public void whenConvertMapToString_thenConverted () {Map plate = Maps.newHashMap (); plate.put ("John", 1000); plate.put ("Jane", 1500); Výsledok reťazca = Joiner.on (",") .withKeyValueSeparator ("=") .join (plat); assertThat (result, containsString ("John = 1000")); assertThat (result, containsString ("Jane = 1500")); }

4. Pripojte sa k vnoreným zbierkam

Teraz - pozrime sa, ako spojiť vnorené zbierky do súboru String. V nasledujúcom príklade sa pripájame k výsledku transformácie každého z nich Zoznam do a String:

@Test public void whenJoinNestedCollections_thenJoined () {Zoznam nested = Lists.newArrayList (Lists.newArrayList ("jablko", "banán", "oranžová"), Lists.newArrayList ("mačka", "pes", "vták"), Lists.newArrayList ("John", "Jane "," Adam ")); Výsledok reťazca = Joiner.on (";"). Join (Iterables.transform (vnorené, nová funkcia)() {@Override public String apply (vstup zo zoznamu) {return Joiner.on ("-"). Join (vstup); }})); assertThat (result, containsString ("apple-banana-orange")); assertThat (result, containsString ("mačka-pes-vták")); assertThat (result, containsString ("apple-banana-orange")); }

5. Počas používania narábajte s nulovými hodnotami Stolár

Teraz - pozrime sa na rôzne spôsoby, ako zaobchádzať s nulovými hodnotami počas používania spojovača.

To preskočiť nulové hodnoty pri pripájaní sa k zbierke skipNulls () ako v nasledujúcom príklade:

@Test public void whenConvertListToStringAndSkipNull_thenConverted () {List names = Lists.newArrayList ("John", null, "Jane", "Adam", "Tom"); Výsledok reťazca = Joiner.on (","). SkipNulls (). Join (names); assertEquals (výsledok, „John, Jane, Adam, Tom“); }

Ak nechcete preskakovať nulové hodnoty a chcete namiesto toho ich vymeňte, použite useForNull () ako v nasledujúcom príklade:

@Test public void whenUseForNull_thenUsed () {List names = Lists.newArrayList ("John", null, "Jane", "Adam", "Tom"); Výsledok reťazca = Joiner.on (","). UseForNull ("bezmenný"). Join (names); assertEquals (výsledok, „John, bezmenný, Jane, Adam, Tom“); }

Poznač si to useForNull () nezmení pôvodný zoznam, ovplyvní to iba výstup spojenia.

6. Vytvorte Zoznam Od String Použitím Rozdeľovač

Teraz - pozrime sa, ako rozdeliť a String do a Zoznam. V nasledujúcom príklade používame na rozdelenie vstupu oddeľovač „-“ String do Zoznam:

@Test public void whenCreateListFromString_thenCreated () {String input = "apple - banana - orange"; Výsledok zoznamu = Splitter.on ("-"). TrimResults () .splitToList (vstup); assertThat (výsledok, obsahuje ("jablko", "banán", "oranžová")); }

Poznač si to trimResults () odstráni vedúce a koncové medzery z výsledných podreťazcov.

7. Vytvorte Mapa Od String Použitím Rozdeľovač

Ďalej - pozrime sa, ako vytvoriť mapu z reťazca pomocou Splittera. V nasledujúcom príklade používame withKeyValueSeparator () rozdeliť a String do a Mapa:

@Test public void whenCreateMapFromString_thenCreated () {String input = "John = first, Adam = second"; Výsledok mapy = Splitter.on (",") .withKeyValueSeparator ("=") .split (vstup); assertEquals ("prvý", result.get ("John")); assertEquals ("druhý", result.get ("Adam")); }

8. Rozdeliť String S viacerými oddeľovačmi

Teraz - pozrime sa, ako rozdeliť a String s viacerými oddeľovačmi. V nasledujúcom príklade používame obidva znaky „.“ a „,“ na rozdelenie našich String:

@Test public void whenSplitStringOnMultipleSeparator_thenSplit () {String input = "apple.banana ,, orange ,,."; Výsledok zoznamu = Splitter.onPattern ("[.,]") .OmitEmptyStrings () .splitToList (vstup); assertThat (výsledok, obsahuje („jablko“, „banán“, „oranžová“)); }

Poznač si to omitEmptyStrings () ignoruje prázdne reťazce a nepridáva ich do výsledku Zoznam.

9. Split a String v konkrétnej dĺžke

Ďalej - poďme sa pozrieť na rozdelenie a String v konkrétnej dĺžke. V nasledujúcom príklade sme rozdelili naše String každé 3 znaky:

@Test public void whenSplitStringOnSpecificLength_thenSplit () {String input = "Hello world"; Výsledok zoznamu = Splitter.fixedLength (3) .splitToList (vstup); assertThat (výsledok, obsahuje ("Hel", "lo", "wor", "ld")); }

10. Obmedzte výsledok rozdelenia

Nakoniec - pozrime sa, ako obmedziť výsledok rozdelenia. Ak chcete Rozdeľovač do po konkrétnom počte položiek prestane štiepať - použitie limit () ako v nasledujúcom príklade:

@Test public void whenLimitSplitting_thenLimited () {String input = "a, b, c, d, e"; Výsledok zoznamu = Splitter.on (",") .limit (4) .splitToList (vstup); assertEquals (4, result.size ()); assertThat (result, contains ("a", "b", "c", "d, e")); }

11. Záver

V tomto výučbe sme ilustrovali, ako používať oboje Stolár a Rozdeľovač na Guave robiť rôzne transformácie medzi zbierkami a sláčikmi.

Implementácia všetkých týchto príkladov a útržkov kódu nájdete v mojom projekte Guava github - toto je projekt založený na Eclipse, takže by malo byť ľahké ho importovať a spustiť tak, ako je.


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