רידוד אוספים מקוננים בג'אווה
1. סקירה כללית
במאמר מהיר זה, נחקור כיצד לשטח אוסף מקונן ב- Java.
2. דוגמה לאוסף מקונן
נניח שיש לנו רשימה של רשימות מסוג חוּט.
רשימה nestedList = asList (asList ("one: one"), asList ("two: one", "two: two", "two: three"), asList ("three: one", "three: two", "three : שלוש "," שלוש: ארבע "));
3. רידוד רשימה עם לכל אחד
על מנת לשטח את האוסף המקונן הזה לרשימת מיתרים, נוכל להשתמש בו לכל אחד יחד עם הפניה לשיטת Java 8:
רשימת הציבור flattenListOfLists באופן מושלם (רשימה nestedList) {רשימה ls = ArrayList חדש (); nestedList.forEach (ls :: addAll); החזר ls; }
וכאן תוכלו לראות את השיטה בפעולה:
@Test public void givenNestedList_thenFlattenImperatively () {List ls = flattenListOfListsImperatively (nestedList); assertNotNull (ls); assertTrue (ls.size () == 8); assertThat (ls, IsIterableContainingInOrder.contains ("one: one", "two: one", "two: two", "two: three", "three: one", "three: two", "three: three", "שלוש ארבע")); }
4. רידוד רשימה עם flatMap
אנו יכולים גם לשטח את הרשימה המקוננת על ידי שימוש ב- flatMap שיטה מה- זרם ממשק API.
זה מאפשר לנו לשטח את המקונן זרם לבנות ולבסוף לאסוף את כל האלמנטים לאוסף מסוים:
רשימה ציבורית flattenListOfListsStream (רשימה list) {return list.stream () .flatMap (Collection :: stream) .collect (Collectors.toList ()); }
והנה ההיגיון בפעולה:
@Test public void givenNestedList_thenFlattenFunctionally () {List ls = flattenListOfListsStream (nestedList); assertNotNull (ls); assertTrue (ls.size () == 8); }
5. מסקנה
פשוט forEach או flatMap ניתן להשתמש בשיטות ב- Java 8, בשילוב עם הפניות לשיטות, לרידוד אוספים מקוננים.
אתה יכול למצוא את הקוד שנדון במאמר זה באתר GitHub.