Tömbök és gyűjtemények egyesítése és megosztása Java-ban

1. Áttekintés

Ebben a gyors bemutatóban megtudhatjuk, hogyan kell csatlakozni és szétválni Tömbök és Gyűjtemények Java-ban, jól kihasználva az új adatfolyam-támogatást.

2. Csatlakozz kettőhöz Tömbök

Kezdjük azzal, hogy összekapcsolunk kettőt Tömbök együtt használva Stream.concat:

@Test public void whenJoiningTwoArrays_thenJoined () {String [] animals1 = new String [] {"Kutya", "Macska"}; Húr [] állatok2 = új húr [] {"Madár", "Tehén"}; Karakterlánc [] eredmény = Stream.concat (Tömbök.folyam (állatok1), Tömbök.folyam (állatok2)). ToArray (String [] :: új); assertArrayEquals (eredmény, új húr [] {"Kutya", "Macska", "Madár", "Tehén"}); }

3. Csatlakozz kettőhöz Gyűjtemények

Csináljuk ugyanazt a kettőt Gyűjtemények:

@Test public void whenJoiningTwoCollections_thenJoined () {Collection collection1 = Arrays.asList ("Kutya", "Macska"); Collection collection2 = Arrays.asList ("Madár", "Tehén", "Jávorszarvas"); Gyűjtemény eredménye = Stream.concat (collection1.stream (), collection2.stream ()) .collect (Collectors.toList ()); assertTrue (eredmény.egyenlő (Tömbök.asList ("Kutya", "Macska", "Madár", "Tehén", "Jávorszarvas"))); }

4. Csatlakozz kettőhöz Gyűjtemények Wi szűrő

Csatlakozzunk kettőhöz Gyűjtemények 10-nél nagyobbat szűrő számok száma:

@Test public void whenJoiningTwoCollectionsWithFilter_thenJoined () {Collection collection1 = Arrays.asList ("Kutya", "Macska"); Collection collection2 = Arrays.asList ("Madár", "Tehén", "Jávorszarvas"); Gyűjtemény eredménye = Stream.concat (collection1.stream (), collection2.stream ()) .filter (e -> e.hossz () == 3) .collect (Collectors.toList ()); assertTrue (eredmény.egyenlő (Tömbök.asList ("Kutya", "Macska", "Tehén"))); }

5. Csatlakozzon egy Sor Ba be Húr

Ezután csatlakozzunk egy tömbhöz a Húr használva Gyűjtő:

@Test public void whenConvertArrayToString_thenConverted () {String [] animals = new String [] {"Kutya", "Macska", "Madár", "Tehén"}; Karakterlánc eredménye = tömbök.folyam (állatok) .gyűjtemény (Gyűjtők.egyesítő (",")); assertEquals (eredmény: "Kutya, Macska, Madár, Tehén"); }

6. Csatlakozzon a Gyűjtemény Ba be Húr

Tegyük ugyanezt, de a-val Gyűjtemény:

@Test public void whenConvertCollectionToString_thenConverted () {Gyűjtemény állatok = Tömbök.asList ("Kutya", "Macska", "Madár", "Tehén"); Karakterlánc eredménye = animals.stream (). Gyűjt (Collectors.joining (",")); assertEquals (eredmény: "Kutya, Macska, Madár, Tehén"); }

7. Csatlakozz a Térkép Ba be Húr

Ezután hozzunk létre egy Húr ki a Térkép.

A folyamat nagyon hasonlít a korábbi példákhoz, de itt van egy további lépésünk, hogy először csatlakozzunk mindegyikhez TérképBelépés:

@Test public void whenConvertMapToString_thenConverted () {Map animals = new HashMap (); animals.put (1, "Kutya"); animals.put (2, "Macska"); animals.put (3, "Tehén"); Karakterlánc eredménye = animals.entrySet (). Stream () .map (entry -> entry.getKey () + "=" + entry.getValue ()) .collect (Collectors.joining (",")); assertEquals (eredmény: "1 = Kutya, 2 = Macska, 3 = Tehén"); }

8. Csatlakozzon a Nestedhez Gyűjtemények Ba be Húr

Tegyünk valamit egy kicsit összetettebben. Csatlakozzunk néhány beágyazotthoz Gyűjtemények ba be Húr.

A következő példában először csatlakozunk minden beágyazott gyűjteményhez, majd mindegyikük eredményéhez:

@Test public void whenConvertNestedCollectionToString_thenConverted () {Collection beágyazott = új ArrayList (); nested.add (Arrays.asList ("Kutya", "Macska")); nested.add (Arrays.asList ("Tehén", "Malac")); Karakterlánc eredménye = beágyazott.stream (). Map (nextList -> nextList.stream () .collect (Collectors.joining ("-"))) .collect (Collectors.joining (";")); assertEquals (eredmény: "Kutya-macska; tehén-disznó"); }

9. Fogantyú Nulla Értékek a csatlakozáskor

Nehogy meglássuk, hogyan használhatjuk a Szűrő bármelyiket kihagyni nulla értékek:

@Test public void whenConvertCollectionToStringAndSkipNull_thenConverted () {Gyűjtemény állatok = Tömbök.asList ("Kutya", "Macska", null, "Jávorszarvas"); Karakterlánc eredménye = animals.stream () .filter (Objects :: nonNull) .collect (Collectors.joining (",")); assertEquals (eredmény: "Kutya, Macska, Jávorszarvas"); }

10. Hasított a Gyűjtemény kettőbe

Osztjuk a Gyűjtemény számok ketté Gyűjtemények közepén:

@Test public void whenSplitCollectionHalf_thenConverted () {Collection animals = Arrays.asList ("Kutya", "Macska", "Tehén", "Madár", "Jávorszarvas", "Malac"); Gyűjtemény eredménye1 = új ArrayList (); Gyűjtemény eredménye2 = új ArrayList (); AtomicInteger count = új AtomicInteger (); int középpont = Math.kör (állatok.méret () / 2); animals.forEach (következő -> {int index = count.getAndIncrement (); if (index <középpont) {eredmény1.add (következő);} else {eredmény2.add (következő);}}); assertTrue (eredmény1.egyenlő (Tömbök.asList ("Kutya", "Macska", "Tehén"))); assertTrue (eredmény2.egyenlő (Tömbök.asList ("Madár", "Jávorszarvas", "Malac"))); }

11. Osztani egy Sor a Word Hossza szerint

Ezután osszunk el egy tömböt a szavak hossza szerint:

@Test public void whenSplitArrayByWordLength_thenConverted () {String [] animals = new String [] {"Kutya", "Macska", "Madár", "Tehén", "Malac", "Jávorszarvas"}; Térkép eredmény = tömbök.stream (állatok) .collect (Collectors.groupingBy (String :: hossz)); assertTrue (result.get (3) .egyenlő (Arrays.asList ("Kutya", "Macska", "Tehén", "Malac"))); assertTrue (result.get (4) .egyenlő (Arrays.asList ("Madár"))); assertTrue (result.get (5) .egyenlő (Arrays.asList ("Moose"))); }

12. Hasított a Húr Egybe Sor

Most tegyük az ellenkezőjét, osszuk el a Húr egy an Sor:

@Test public void whenConvertStringToArray_thenConverted () {String animals = "Kutya, Macska, Madár, Tehén"; Karakterlánc [] eredmény = állatok.split (","); assertArrayEquals (eredmény, új húr [] {"Kutya", "Macska", "Madár", "Tehén"}); }

13. Split Húr Ba be Gyűjtemény

Ez a példa hasonló az előzőhöz, csak egy extra lépés van, amelyből konvertálhat Sor a Gyűjtemény:

@Test public void whenConvertStringToCollection_thenConverted () {String animals = "Kutya, Macska, Madár, Tehén"; Gyűjtemény eredménye = Arrays.asList (animals.split (",")); assertTrue (eredmény.egyenlő (Tömbök.asList ("Kutya", "Macska", "Madár", "Tehén"))); }

14. Hasított a Húr Ba be Térkép

Most hozzunk létre egy Térkép a-tól Húr. Kétszer kell felosztanunk a karakterláncunkat, egyszer minden bejegyzésnél, utoljára pedig a kulcshoz és az értékekhez:

@Test public void whenConvertStringToMap_thenConverted () {String animals = "1 = Kutya, 2 = Macska, 3 = Madár"; Térkép eredménye = Arrays.stream (animals.split (",")). Map (következő -> next.split ("=")) .collect (Collectors.toMap (bejegyzés -> Integer.parseInt (bejegyzés [0]) , bejegyzés -> bejegyzés [1]))); assertEquals (eredmény.get (1), "Kutya"); assertEquals (eredmény.get (2), "Macska"); assertEquals (eredmény.get (3), "Madár"); }

15. Split Karakterlánc Wtöbb szeparátor

Végül osszuk el a Húr amelynek több elválasztója van egy reguláris kifejezést használva, akkor az üres eredményeket is eltávolítjuk:

@Test public void whenConvertCollectionToStringMultipleSeparators_thenConverted ().] ")) .Map (String :: trim) .filter (next ->! Next.isEmpty ()) .collect (Collectors.toList ()); assertTrue (eredmény.egyen .asList ("Kutya", "Macska", "Madár", "Tehén"))); 

16. Következtetés

Ebben az oktatóanyagban kihasználva az egyszerűt String.split funkció és az erős Java 8 Folyam, szemléltettük, hogyan lehet csatlakozni és szétválni Tömbök és Gyűjtemények.

A cikk kódját a GitHubon találja meg.


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