Stream FlatMap in Java with Examples

الـ flatMap هي عملية بنطبق فيها Function معينة على كل عنصر من عناصر الـ (Stream) اللي معانا وبناء عليه بيرجع Stream تاني، وبعد كده بنضم كل الـ Streams دي في Stream واحد. فبيخليهم Flattened يعني مسطحين.
Stream FlatMap in Java with Examples
Stream FlatMap in Java with Examples

في هذه الصفحة

المقدمة

في الـ Java، بعض الـ Functions زي الـ map و flatMap هي أدوات أساسية في الـ (Functional Programming).

فالـ map عندنا بنستخدمها اما نكون عاوزين نحول العناصر اللي عندنا في List لشكل تاني بمعنى أدق بنعمل Transformation لكل Element في الـ List بنعمله Mapping لشكل مختلف، بينما الـ flatMap بتستخدم بشكل رئيسي لتحويل وتقليص المجموعات لمجموعات مسطحة أو Flattened.

يعني ايه الكلام ده ؟ خلونا نكمل عشان نفهم الموضوع أكتر.


إيه هي الـ FlatMap

الـ flatMap هي عملية بنطبق فيها Function معينة على كل عنصر من عناصر الـ (Stream) اللي معانا وبناء عليه بيرجع Stream تاني، وبعد كده بنضم كل الـ Streams دي في Stream واحد. فبيخليهم Flattened يعني مسطحين.


طب ايه الفرق بين Map و FlatMap

  • الـ Map: بتاخد Function وبتحول عنصر لـ عنصر تاني زي ما قولنا اكني بعمل Transformation للعنصر لعنصر تاني في الـ Stream.
  • الـ FlatMap: بتاخد Function بتحول العنصر لـ Stream، وبعد كده بتسطح (flattening) الـ Streams اللي نتجت دي في Stream واحد.

بعض الأمثلة لاستخدام FlatMap

خلونا نشوف مع بعض أمثلة لاستخدام الـ FlatMap عشان نفهمها كويس ونفهم هي بتقدملنا ايه.

Text Analysis Example without FlatMap

هنفترض إن عندنا قائمة من الجمل وعاوزين نجيب قائمة بكل الكلمات اللي موجودة في الجمل دي.

لو شغالين من غير FlatMap كان شكل الكود هيكون كالآتي :

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class FlatMapExampleWithoutFlatMap {
    public static void main(String[] args) {
        List<String> sentences = Arrays.asList("Hello world", "FlatMap in Java", "Stream API examples");
        
        List<String> words = new ArrayList<>();
        for (String sentence : sentences) {
            String[] splitWords = sentence.split(" ");
            for (String word : splitWords) {
                words.add(word);
            }
        }
        
        System.out.println(words);
    }
}

وطبعا زي ماحنا شايفين الـ Code مش Readable وصعب انه يتفهم خصوصا لو كان فيه Complex Operations بتتم كذلك , وعشان كده الـ Stream API في الـ Java لو فهمناه كويس وبدأنا نطبقه ونطبق الـ Stream Operations , ده هيحسن من الـ Maintainability بتاعة الـ Code بتاعنا.

طب شكل الكود باستعمال الـ FlatMap هيكون عامل ازاي ؟


تقدروا دلوقتي تشتركوا في النشرة الأسبوعية لاقرأ-تِك بشكل مجاني تمامًا عشان يجيلكوا كل جديد بشكل أسبوعي فيما يخص مواضيع متنوعة وبشروحات بسيطة وسهلة وبجودة عالية 🚀

النشرة هيكون ليها شكل جديد ومختلف عن شكلها القديم وهنحاول انها تكون مميزة ومختلفة وخليط بين المحتوى الأساسي اللي بينزل ومفاجآت تانية كتير 🎉

Eqraatech Newsletter | Eqraatech - اقرأ-تِك | Substack
محتوى تقني متميز في مختلف مجالات هندسة البرمجيات باللغة العربية عن طريق تبسيط المفاهيم البرمجية المعقدة بشكل سلس وباستخدام صور توضيحية مذهلة. Click to read Eqraatech Newsletter, a Substack publication with hundreds of subscribers.

Text Analysis Example with FlatMap

هذا المقال مخصص للأعضاء المنتسبين لخطط الاشتراك المدفوعة فقط

اشترك الآن بنشرة اقرأ-تِك الأسبوعية

لا تدع أي شيء يفوتك. واحصل على أحدث المقالات المميزة مباشرة إلى بريدك الإلكتروني وبشكل مجاني!