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.