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.