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.


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