"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > ما هو الفرق الرئيسي بين Stream.map () و Stream.flatMap () في Java 8؟

ما هو الفرق الرئيسي بين Stream.map () و Stream.flatMap () في Java 8؟

تم النشر بتاريخ 2024-11-15
تصفح:485

What\'s the Key Difference Between Stream.map() and Stream.flatMap() in Java 8?

Stream.map () مقابل Stream.flatMap () في Java 8

Stream.map () و Stream.flatMap () طريقتان شائعتا الاستخدام في Java 8 تقومان بإجراء تحويلات مماثلة على دفق من القيم. ومع ذلك، لديهم اختلاف جوهري في كيفية معالجة القيم وإرجاعها.

Stream.map()

  • هل يقبل وظيفة كوسيطة، حيث T هو نوع الإدخال وR هو نوع الإخراج.
  • يطبق الوظيفة المحددة على كل عنصر في دفق الإدخال.
  • ينتج دفقًا جديدًا يحتوي على القيم المحولة، كل منها يتوافق مع قيمة إدخال.
  • على سبيل المثال، في ضوء تدفق من الأعداد الصحيحة، يمكن استخدام الخريطة لتحويل كل عدد صحيح إلى مربعه.

التدفق .flatMap()

  • يقبل وظيفة سوبر تي، ؟ يمتد الدفق > كوسيطة، والتي ترجع دفقًا لكل قيمة إدخال.
  • استدعاء الوظيفة على كل عنصر في دفق الإدخال.
  • يتم ربط التدفقات الناتجة في دفق واحد، إنشاء مخرجات "مسطحة".
  • على سبيل المثال، في ضوء تدفق من السلاسل، يمكن استخدام flatMap لاستخراج جميع الأحرف الفردية في تدفق واحد من الأحرف.

الفرق الرئيسي

يكمن الاختلاف الأساسي بين الخريطة () وflatMap () في كيفية تعاملهما مع نتائج وظيفة التحويل:

  • map () ينتج قيمة واحدة قيمة محولة لكل قيمة إدخال.
  • flatMap() ينتج صفر أو أكثر قيم محولة لكل قيمة إدخال.

يؤثر هذا التمييز على شكل ومحتوى الدفق الناتج. تسمح flatMap() بإنشاء تدفقات متداخلة، بينما تحافظ الخريطة() على نفس أبعاد التدفق الأصلي.

أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3