A beágyazott gyűjtemények lapítása Java-ban
1. Áttekintés
Ebben a rövid cikkben azt vizsgáljuk meg, hogyan lehet laposítani a beágyazott gyűjteményeket a Java-ban.
2. Példa beágyazott gyűjteményre
Tegyük fel, hogy van egy típusú listánk Húr.
Lista nestedList = asList (asList ("egy: egy"), asList ("kettő: egy", "kettő: kettő", "kettő: három"), asList ("három: egy", "három: kettő", "három" : három "," három: négy "));
3. A lapítás Lista Val vel az egyes
Annak érdekében, hogy ezt az egymásba ágyazott gyűjteményt karakterláncokká lapozzuk össze, használhatjuk az egyes Java 8 módszer referenciával együtt:
nyilvános lista flattenListOfListsImperative (List nestedList) {List ls = new ArrayList (); nestedList.forEach (ls :: addAll); visszatérés ls; }
És itt láthatja a módszert működés közben:
@Test public void givenNestedList_thenFlattenImperative () {List ls = flattenListOfListsImperative (nestedList); assertNotNull (ls); assertTrue (ls.size () == 8); assertThat (ls, IsIterableContainingInOrder.contains ("egy: egy", "kettő: egy", "kettő: kettő", "kettő: három", "három: egy", "három: kettő", "három: három", "három négy")); }
4. A lapítás Lista Val vel flatMap
A beágyazott listát a flatMap módszer a Folyam API.
Ez lehetővé teszi számunkra, hogy ellapítsuk a beágyazottakat Folyam felépítése és végül az összes elem összegyűjtése egy adott gyűjteménybe:
nyilvános lista flattenListOfListsStream (List list) {return list.stream () .flatMap (Collection :: stream) .collect (Collectors.toList ()); }
És itt van a logika a működésben:
@Test public void givenNestedList_thenFlattenFunctionally () {List ls = flattenListOfListsStream (nestedList); assertNotNull (ls); assertTrue (ls.size () == 8); }
5. Következtetés
Egy egyszerű forEach vagy flatMap A Java 8-ban leírt módszerek, a módszerreferenciákkal kombinálva, használhatók a beágyazott gyűjtemények ellaposítására.
Az ebben a cikkben tárgyalt kódot a GitHubon találja meg.