ما الفرق بين Map و Set؟

الفرق بين Map و Set في البرمجة هو أن Map تُستخدم لتخزين بيانات على شكل أزواج (مفتاح وقيمة)، بينما Set تُستخدم لتخزين مجموعة من القيم الفريدة فقط بدون تكرار.

ما هي Map؟

Map هي بنية بيانات (Data Structure) تسمح لك بتخزين البيانات في شكل:

  • مفتاح (Key)
  • قيمة (Value)

كل مفتاح يرتبط بقيمة معينة، مثل:

const user = new Map();
user.set("name", "Ali");
user.set("age", 25);

مميزات Map

  • تسمح باستخدام أي نوع كـ مفتاح (نص، رقم، كائن)
  • تحافظ على ترتيب الإدخال
  • مناسبة لتمثيل البيانات المرتبطة

ما هي Set؟

Set هي بنية بيانات تُخزن قيمًا فريدة فقط، أي لا تسمح بالتكرار:

const numbers = new Set();
numbers.add(1);
numbers.add(2);
numbers.add(2); // لن يتم إضافتها مرة أخرى

مميزات Set

  • تمنع تكرار القيم تلقائيًا
  • مفيدة لتنظيف البيانات من التكرار
  • سهلة الاستخدام في عمليات التحقق

الفرق الأساسي بين Map و Set

1. طريقة التخزين

  • Map: تخزن بيانات (Key → Value)
  • Set: تخزن قيم فقط

2. التكرار

  • Map: يمكن أن تتكرر القيم لكن المفاتيح فريدة
  • Set: لا تسمح بتكرار أي قيمة

3. الاستخدام

  • Map: عند الحاجة لربط بيانات ببعضها (مثل اسم → عمر)
  • Set: عند الحاجة لقائمة عناصر بدون تكرار

متى تستخدم كل واحدة؟

استخدم Map إذا:

  • تحتاج إلى ربط بيانات ببعضها
  • تريد الوصول إلى قيمة باستخدام مفتاح

استخدم Set إذا:

  • تريد إزالة التكرار من قائمة
  • تحتاج التحقق بسرعة إذا كانت قيمة موجودة

مثال عملي

إذا كان لديك قائمة أسماء مكررة:

const names = ["Ali", "Sara", "Ali"];
const uniqueNames = new Set(names);

هنا Set ستحتفظ بـ “Ali” مرة واحدة فقط.

أما إذا أردت تخزين بيانات مستخدم:

const user = new Map();
user.set("name", "Ali");
user.set("email", "ali@email.com");

أخطاء شائعة

  • استخدام Set بدل Map عند الحاجة لمفتاح وقيمة
  • عدم فهم أن Set لا تخزن أزواج بيانات
  • الخلط بين المصفوفات (Array) و Set

خلاصة

Map و Set كلاهما من هياكل البيانات القوية، لكن لكل منهما استخدام مختلف. اختر Map عندما تحتاج إلى تنظيم البيانات في أزواج، واختر Set عندما تريد مجموعة قيم بدون تكرار. فهم هذا الفرق يساعدك على كتابة كود أكثر كفاءة وتنظيمًا.

السابق
ما أهمية الباك لينك؟
التالي
ما أفضل التطبيقات لتعلم الرياضيات؟