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.


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