Pripojte sa a rozdeľte polia a zbierky v Jave
1. Prehľad
V tomto rýchlom výučbe sa naučíme, ako sa spojiť a rozdeliť Polia a Zbierky v Jave, pričom dobre využíva novú podporu streamu.
2. Pripojte sa k dvom Polia
Začnime spojením dvoch Polia spolu pomocou Stream.concat:
@Test public void whenJoiningTwoArrays_thenJoined () {String [] animals1 = new String [] {"Dog", "Cat"}; Reťazec [] animals2 = nový Reťazec [] {"Vták", "Krava"}; Výsledok reťazca [] = Stream.concat (Arrays.stream (zvieratá1), Arrays.stream (zvieratá2)). ToArray (reťazec [] :: nový); assertArrayEquals (výsledok, nový reťazec [] {"pes", "mačka", "vták", "krava"}); }
3. Pripojte sa k dvom Zbierky
Urobme to isté a spojme sa s dvoma Zbierky:
@Test public void whenJoiningTwoCollections_thenJoined () {Collection collection1 = Arrays.asList ("Dog", "Cat"); Collection collection2 = Arrays.asList ("Vták", "Krava", "Los"); Výsledok zbierky = Stream.concat (collection1.stream (), collection2.stream ()) .collect (Collectors.toList ()); assertTrue (result.equals (Arrays.asList ("Pes", "Mačka", "Vták", "Krava", "Los"))); }
4. Pripojte sa k dvom Zbierky Wi-ty filter
Teraz sa pripojme k dvom Zbierky čísel filtrujúcich niečo väčšie ako 10:
@Test public void whenJoiningTwoCollectionsWithFilter_thenJoined () {Collection collection1 = Arrays.asList ("Dog", "Cat"); Collection collection2 = Arrays.asList ("Vták", "Krava", "Los"); Výsledok zbierky = Stream.concat (collection1.stream (), collection2.stream ()). Filter (e -> e.length () == 3) .collect (Collectors.toList ()); assertTrue (result.equals (Arrays.asList ("Pes", "Mačka", "Krava"))); }
5. Pripojte sa k Pole Do a String
Ďalej spojme pole do a String pomocou a Zberateľ:
@Test public void whenConvertArrayToString_thenConverted () {String [] animals = new String [] {"Dog", "Cat", "Bird", "Cow"}; Výsledok reťazca = Arrays.stream (zvieratá) .collect (Collectors.joining (",")); assertEquals (výsledok: "Pes, mačka, vták, krava"); }
6. Pripojte sa a Zbierka Do a String
Urobme to isté, ale s a Zbierka:
@Test public void whenConvertCollectionToString_thenConverted () {Collection animals = Arrays.asList ("Dog", "Cat", "Bird", "Cow"); Výsledok reťazca = animals.stream (). Collect (Collectors.joining (",")); assertEquals (výsledok: "Pes, mačka, vták, krava"); }
7. Pripojte sa a Mapa Do a String
Ďalej vytvoríme a String z a Mapa.
Proces je veľmi podobný predchádzajúcim príkladom, ale tu je ešte jeden krok, ktorým sa najskôr pripojíme MapaVstup:
@Test public void whenConvertMapToString_thenConverted () {Map animals = new HashMap (); animals.put (1, „Pes“); animals.put (2, „Cat“); animals.put (3, "Krava"); Výsledok reťazca = animals.entrySet (). Stream () .map (entry -> entry.getKey () + "=" + entry.getValue ()) .collect (Collectors.joining (",")); assertEquals (výsledok, "1 = pes, 2 = mačka, 3 = krava"); }
8. Pripojte sa k vnorenému Zbierky Do a String
Urobme niečo trochu zložitejšie. Pripojme sa k niektorým vnoreným Zbierky do a String.
V nasledujúcom príklade sa najskôr spojíme s každou vnorenou kolekciou a potom spojíme výsledok každej z nich:
@Test public void whenConvertNestedCollectionToString_thenConverted () {zbierka nested = new ArrayList (); nested.add (Arrays.asList ("Pes", "Mačka")); nested.add (Arrays.asList ("Krava", "Prasa")); Výsledok reťazca = nested.stream (). Map (nextList -> nextList.stream () .collect (Collectors.joining ("-"))) .collect (Collectors.joining (";")); assertEquals (výsledok: "Pes-mačka; Krava-prasa"); }
9. Rukoväť Nulový Hodnoty pri pripojení
Pozrime sa, ako môžeme použiť a Filtrovať preskočiť akýkoľvek nulový hodnoty:
@Test public void whenConvertCollectionToStringAndSkipNull_thenConverted () {Collection animals = Arrays.asList ("Dog", "Cat", null, "Moose"); Výsledok reťazca = animals.stream () .filter (Objects :: nonNull) .collect (Collectors.joining (",")); assertEquals (výsledok, „Pes, Mačka, Los“); }
10. Split a Zbierka vo dvoch
Poďme rozdeliť a Zbierka čísel na dve Zbierky v strede:
@Test public void whenSplitCollectionHalf_thenConverted () {Collection animals = Arrays.asList ("Dog", "Cat", "Cow", "Bird", "Moose", "Pig"); Výsledok zbierky1 = nový ArrayList (); Výsledok zbierky2 = nový ArrayList (); AtomicInteger count = new AtomicInteger (); int stred = Math.round (animals.size () / 2); animals.forEach (next -> {int index = count.getAndIncrement (); if (index <midpoint) {result1.add (next);} else {result2.add (next);}}); assertTrue (result1.equals (Arrays.asList ("Pes", "Mačka", "Krava"))); assertTrue (result2.equals (Arrays.asList ("Bird", "Moose", "Pig"))); }
11. Split an Pole podľa dĺžky slova
Ďalej rozdelíme pole podľa dĺžky slov:
@Test public void whenSplitArrayByWordLength_thenConverted () {String [] animals = new String [] {"Dog", "Cat", "Bird", "Cow", "Pig", "Moose"}; Mapa výsledok = Arrays.stream (zvieratá) .collect (Collectors.groupingBy (String :: length)); assertTrue (result.get (3) .equals (Arrays.asList ("Pes", "Mačka", "Krava", "Prasa"))); assertTrue (result.get (4) .equals (Arrays.asList ("Bird"))); assertTrue (result.get (5) .equals (Arrays.asList ("Moose")))); }
12. Split a String Do Pole
Teraz urobme opak, rozdelme a String do Pole:
@Test public void whenConvertStringToArray_thenConverted () {String animals = "Dog, Cat, Bird, Cow"; Výsledok reťazca [] = animals.split (","); assertArrayEquals (výsledok, nový reťazec [] {"pes", "mačka", "vták", "krava"}); }
13. Rozdeliť String Do a Zbierka
Tento príklad je podobný predchádzajúcemu, existuje iba ďalší krok, z ktorého je možné vykonať konverziu Pole do a Zbierka:
@Test public void whenConvertStringToCollection_thenConverted () {String animals = "Dog, Cat, Bird, Cow"; Výsledok zbierky = Arrays.asList (animals.split (",")); assertTrue (result.equals (Arrays.asList ("Pes", "Mačka", "Vták", "Krava"))); }
14. Split a String Do a Mapa
Teraz vytvorme a Mapa od a String. Náš reťazec budeme musieť rozdeliť dvakrát, raz pre každú položku a naposledy pre kľúč a hodnoty:
@Test public void whenConvertStringToMap_thenConverted () {String animals = "1 = Dog, 2 = Cat, 3 = Bird"; Výsledok mapy = Arrays.stream (animals.split (",")). Map (next -> next.split ("=")) .collect (Collectors.toMap (záznam -> Integer.parseInt (záznam [0])) , záznam -> záznam [1])); assertEquals (result.get (1), "Pes"); assertEquals (result.get (2), "Cat"); assertEquals (result.get (3), "Bird"); }
15. Rozdeliť Reťazec Wi viac oddeľovačov
Nakoniec si rozdelíme a String ktorý má viac oddeľovačov pomocou regulárneho výrazu, odstránime tiež všetky prázdne výsledky:
@Test public void whenConvertCollectionToStringMultipleSeparators_thenConverted ().]))) .Map (String :: trim) .filter (next ->! Next.isEmpty ()) .collect (Collectors.toList ()); assertTrue (result.equals (Arrays) .asList („Pes“, „Mačka“, „Vták“, „Krava“)));
16. Záver
V tomto tutoriáli využívame jednoduché String.split funkcie a výkonná Java 8 Prúd, ilustrovali sme, ako sa pripojiť a rozdeliť Polia a Zbierky.
Kód tohto článku nájdete na GitHub.