Map في Dart

Map في Dart: الشرح التفصيلي، الخيارات، مواضع الاستخدام، والأمثلة


ما هو Map؟

  • Map هو هيكل بيانات في Dart يتكون من مفاتيح (Keys) وقيم (Values).
  • كل مفتاح يرتبط بقيمة واحدة فقط.
  • المفاتيح يجب أن تكون فريدة بينما القيم يمكن أن تكون مكررة.

تعريف Map في Dart

1. تعريف Map فارغ

dartCopyEdit<code>void main() {
  Map<String, String> emptyMap = {};
  print(emptyMap); // {}
}
</code>
Dart

2. تعريف Map مع عناصر

dartCopyEdit<code>void main() {
  Map<String, String> countryCapital = {
    'Egypt': 'Cairo',
    'France': 'Paris',
    'Japan': 'Tokyo',
  };
  print(countryCapital); // {Egypt: Cairo, France: Paris, Japan: Tokyo}
}
</code>
Dart

خصائص Map

1. isEmpty

  • تتحقق مما إذا كان الـ Map فارغًا.
dartCopyEdit<code>void main() {
  Map<int, String> numbers = {};
  print(numbers.isEmpty); // true
}
</code>
Dart

2. isNotEmpty

  • تتحقق مما إذا كان الـ Map يحتوي على عناصر.
dartCopyEdit<code>void main() {
  Map<int, String> numbers = {1: 'One'};
  print(numbers.isNotEmpty); // true
}
</code>
Dart

3. length

  • تعيد عدد الأزواج (المفتاح والقيمة) الموجودة في الـ Map.
dartCopyEdit<code>void main() {
  Map<String, String> countries = {'USA': 'Washington', 'UK': 'London'};
  print(countries.length); // 2
}
</code>
Dart

4. keys

  • تعيد قائمة تحتوي على جميع المفاتيح.
dartCopyEdit<code>void main() {
  Map<String, int> ages = {'Ali': 25, 'Sara': 30};
  print(ages.keys); // (Ali, Sara)
}
</code>
Dart

5. values

  • تعيد قائمة تحتوي على جميع القيم.
dartCopyEdit<code>void main() {
  Map<String, int> ages = {'Ali': 25, 'Sara': 30};
  print(ages.values); // (25, 30)
}
</code>
Dart

العمليات الأساسية على Map

1. إضافة عنصر

  • باستخدام المربعين [].
dartCopyEdit<code>void main() {
  Map<String, int> scores = {};
  scores['Ali'] = 90;
  print(scores); // {Ali: 90}
}
</code>
Dart

2. تحديث قيمة عنصر

  • باستخدام المفتاح.
dartCopyEdit<code>void main() {
  Map<String, int> scores = {'Ali': 90};
  scores['Ali'] = 95;
  print(scores); // {Ali: 95}
}
</code>
Dart

3. إزالة عنصر

  • باستخدام remove().
dartCopyEdit<code>void main() {
  Map<String, int> scores = {'Ali': 90, 'Sara': 85};
  scores.remove('Sara');
  print(scores); // {Ali: 90}
}
</code>
Dart

4. التحقق من وجود مفتاح

  • باستخدام containsKey().
dartCopyEdit<code>void main() {
  Map<String, String> capitals = {'Egypt': 'Cairo'};
  print(capitals.containsKey('Egypt')); // true
  print(capitals.containsKey('France')); // false
}
</code>
Dart

5. التحقق من وجود قيمة

  • باستخدام containsValue().
dartCopyEdit<code>void main() {
  Map<String, String> capitals = {'Egypt': 'Cairo'};
  print(capitals.containsValue('Cairo')); // true
  print(capitals.containsValue('Paris')); // false
}
</code>
Dart

6. التكرار على العناصر

  • باستخدام forEach().
مثال:
dartCopyEdit<code>void main() {
  Map<String, int> scores = {'Ali': 90, 'Sara': 85};

  scores.forEach((key, value) {
    print('اسم الطالب: $key، الدرجة: $value');
  });
}
</code>
Dart

تحويلات Map

1. تحويل المفاتيح إلى قائمة

dartCopyEdit<code>void main() {
  Map<String, int> scores = {'Ali': 90, 'Sara': 85};
  List<String> keysList = scores.keys.toList();
  print(keysList); // [Ali, Sara]
}
</code>
Dart

2. تحويل القيم إلى قائمة

dartCopyEdit<code>void main() {
  Map<String, int> scores = {'Ali': 90, 'Sara': 85};
  List<int> valuesList = scores.values.toList();
  print(valuesList); // [90, 85]
}
</code>
Dart

أنواع أخرى من Map

1. Map من أنواع متعددة

dartCopyEdit<code>void main() {
  Map<dynamic, dynamic> mixedMap = {
    'name': 'Ali',
    1: 'One',
    true: 'Yes'
  };
  print(mixedMap); // {name: Ali, 1: One, true: Yes}
}
</code>
Dart

مواضع استخدام Map

  • الربط بين المفاتيح والقيم: مثل قوائم المنتجات وأسعارها أو أسماء الطلاب ودرجاتهم.
  • تخزين بيانات غير مرتبة: عندما تكون العلاقات بين البيانات (المفتاح والقيمة) أكثر أهمية من ترتيبها.
  • تحليل البيانات: استخراج معلومات محددة باستخدام المفاتيح.

نصائح

  • استخدم Map عندما تحتاج إلى البحث السريع عن قيم بناءً على مفتاح.
  • حاول دائمًا التأكد من فريدة المفاتيح لتجنب الأخطاء.