Flate nestede samlinger i Java

1. Oversikt

I denne raske artikkelen vil vi utforske hvordan du flater en nestet samling i Java.

2. Eksempel på en nestet samling

Anta at vi har en liste over typelister String.

Liste nestedList = asList (asList ("one: one"), asList ("two: one", "two: two", "two: three"), asList ("three: one", "three: two", "three : tre "," tre: fire "));

3. Flat ut Liste Med for hver

For å flate denne nestede samlingen i en liste over strenger, kan vi bruke for hver sammen med en referanse for Java 8-metoden:

public List flattenListOfListsIperatively (List nestedList) {List ls = new ArrayList (); nestedList.forEach (ls :: addAll); returner ls; } 

Og her kan du se metoden i aksjon:

@Test public void givenNestedList_thenFlattenImperatively () {List ls = flattenListOfListsImperatively (nestedList); assertNotNull (ls); assertTrue (ls.size () == 8); assertThat (ls, IsIterableContainingInOrder.contains ("en: en", "to: en", "to: to", "to: tre", "tre: en", "tre: to", "tre: tre", "tre fire")); }

4. Flat ut Liste Med flatMap

Vi kan også flate den nestede listen ved å bruke flatMap metoden fra Strøm API.

Dette lar oss flate det nestede Strøm strukturere og til slutt samle alle elementene til en bestemt samling:

public List flattenListOfListsStream (List liste) {return list.stream () .flatMap (Collection :: stream) .collect (Collectors.toList ()); } 

Og her er logikken i aksjon:

@Test public void givenNestedList_thenFlattenFunctionally () {List ls = flattenListOfListsStream (nestedList); assertNotNull (ls); assertTrue (ls.size () == 8); }

5. Konklusjon

En enkel forEach eller flatMap metoder i Java 8, i kombinasjon med metodereferanser, kan brukes til å flate nestede samlinger.

Du kan finne koden diskutert i denne artikkelen på GitHub.


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