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.