في هذه الصفحة
المقدمة
في الـ 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 هيكون عامل ازاي ؟
تقدروا دلوقتي تشتركوا في النشرة الأسبوعية لاقرأ-تِك بشكل مجاني تمامًا عشان يجيلكوا كل جديد بشكل أسبوعي فيما يخص مواضيع متنوعة وبشروحات بسيطة وسهلة وبجودة عالية 🚀
النشرة هيكون ليها شكل جديد ومختلف عن شكلها القديم وهنحاول انها تكون مميزة ومختلفة وخليط بين المحتوى الأساسي اللي بينزل ومفاجآت تانية كتير 🎉