Sploštenie vnorených zbierok v Jave
1. Prehľad
V tomto rýchlom článku sa budeme venovať tomu, ako zlúčiť vnorenú kolekciu v Jave.
2. Ukážka vnorenej zbierky
Predpokladajme, že máme zoznam typov String.
Zoznam nestedList = asList (asList ("one: one"), asList ("two: one", "two: two", "two: three"), asList ("three: one", "three: two", "three : tri "," tri: štyri "));
3. Sploštenie Zoznam S pre každý
Na vyrovnanie tejto vnorenej kolekcie do zoznamu reťazcov môžeme použiť pre každý spolu s odkazom na metódu Java 8:
verejný zoznam flattenListOfListsImperatively (zoznam nestedList) {List ls = new ArrayList (); nestedList.forEach (ls :: addAll); návrat ls; }
A tu môžete vidieť metódu v akcii:
@Test public void givenNestedList_thenFlattenImperatively () {List ls = flattenListOfListsImperatively (nestedList); assertNotNull (ls); assertTrue (ls.size () == 8); assertThat (ls, IsIterableContainingInOrder.contains ("jeden: jeden", "dva: jeden", "dva: dva", "dva: tri", "tri: jeden", "tri: dva", "tri: tri", „tri: štyri“)); }
4. Sploštenie Zoznam S flatMap
Vnorený zoznam môžeme tiež vyrovnať pomocou znaku flatMap metóda z Prúd API.
To nám umožňuje sploštiť vnorené Prúd štruktúru a prípadne zhromaždiť všetky prvky do konkrétnej zbierky:
verejný zoznam flattenListOfListsStream (zoznam zoznam) {návrat list.stream () .flatMap (Collection :: stream) .collect (Collectors.toList ()); }
A tu je logika v akcii:
@Test public void givenNestedList_thenFlattenFunctionally () {List ls = flattenListOfListsStream (nestedList); assertNotNull (ls); assertTrue (ls.size () == 8); }
5. Záver
Jednoduchý forEach or flatMap metódy v Jave 8 v kombinácii s odkazmi na metódy možno použiť na sploštenie vnorených zbierok.
Kód, o ktorom sa hovorí v tomto článku, nájdete na serveri GitHub.