Poravnavanje ugniježđenih kolekcija u Javi

1. Pregled

U ovom ćemo kratkom članku istražiti kako izravnati ugniježđenu kolekciju u Javi.

2. Primjer ugniježđene zbirke

Pretpostavimo da imamo popis vrsta popisa Niz.

Popis nestedList = asList (asList ("one: one"), asList ("two: one", "two: two", "two: three"), asList ("three: one", "three: two", "three : tri "," tri: četiri "));

3. izravnavanje Popis S za svakoga

Da bismo ovu ugniježđenu zbirku izravnali na popis nizova, možemo koristiti za svakoga zajedno s referencom metode Java 8:

javni popis flattenListOfListsImperatively (List nestedList) {Popis ls = novi ArrayList (); nestedList.forEach (ls :: addAll); povratak ls; } 

I ovdje možete vidjeti metodu na djelu:

@Test javna praznina givenNestedList_thenFlattenImperatively () {List ls = flattenListOfListsImperatively (nestedList); assertNotNull (ls); assertTrue (ls.size () == 8); assertThat (ls, IsIterableContainingInOrder.contains ("jedan: jedan", "dva: jedan", "dva: dva", "dva: tri", "tri: jedan", "tri: dva", "tri: tri", "tri: četiri"))); }

4. Izravnavanje Popis S flatMap

Također možemo izravnati ugniježđeni popis korištenjem flatMap metoda iz Stream API.

To nam omogućuje izravnavanje ugniježđenog Stream strukturirati i na kraju prikupiti sve elemente u određenu zbirku:

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

I evo logike na djelu:

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

5. Zaključak

Jednostavan forEach ili flatMap metode u Javi 8, u kombinaciji s referencama metoda, mogu se koristiti za poravnavanje ugniježđenih zbirki.

Kôd o kojem se raspravlja u ovom članku možete pronaći na GitHubu.


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