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.