خصائص Map في Dart

خصائص Map في Dart بالتفصيل مع الأمثلة

في Dart، Map هي نوع بيانات يستخدم لتخزين أزواج من المفاتيح والقيم. تدعم Map عدة خصائص تسهل التعامل معها. سنشرح كل خاصية مع أمثلة عملية.


1. خاصية keys

🔹 تُرجع مجموعة (Iterable) تحتوي على جميع المفاتيح الموجودة في الـ Map.

مثال:

void main() {
  Map<String, int> students = {'Ali': 90, 'Sara': 85, 'Omar': 78};
  print(students.keys); // (Ali, Sara, Omar)
}
Dart

2. خاصية values

🔹 تُرجع مجموعة (Iterable) تحتوي على جميع القيم المخزنة في الـ Map.

مثال:

void main() {
  Map<String, int> students = {'Ali': 90, 'Sara': 85, 'Omar': 78};
  print(students.values); // (90, 85, 78)
}
Dart

3. خاصية length

🔹 تُرجع عدد الأزواج (المفتاح-القيمة) المخزنة في Map.

مثال:

void main() {
  Map<String, int> students = {'Ali': 90, 'Sara': 85, 'Omar': 78};
  print(students.length); // 3
}
Dart

4. خاصية isEmpty

🔹 تُرجع true إذا كانت Map فارغة، وإلا false.

مثال:

void main() {
  Map<String, int> students = {};
  print(students.isEmpty); // true
}
Dart

5. خاصية isNotEmpty

🔹 تُرجع true إذا كانت Map تحتوي على عناصر، وإلا false.

مثال:

void main() {
  Map<String, int> students = {'Ali': 90};
  print(students.isNotEmpty); // true
}
Dart

6. خاصية containsKey()

🔹 تتحقق مما إذا كانت Map تحتوي على مفتاح معين، وترجع true إذا كان المفتاح موجودًا.

مثال:

void main() {
  Map<String, int> students = {'Ali': 90, 'Sara': 85};
  print(students.containsKey('Ali')); // true
  print(students.containsKey('Omar')); // false
}
Dart

7. خاصية containsValue()

🔹 تتحقق مما إذا كانت Map تحتوي على قيمة معينة، وترجع true إذا كانت القيمة موجودة.

مثال:

void main() {
  Map<String, int> students = {'Ali': 90, 'Sara': 85};
  print(students.containsValue(90)); // true
  print(students.containsValue(100)); // false
}
Dart

8. خاصية remove()

🔹 تُستخدم لإزالة عنصر من Map باستخدام مفتاحه.

مثال:

void main() {
  Map<String, int> students = {'Ali': 90, 'Sara': 85, 'Omar': 78};
  students.remove('Sara');
  print(students); // {Ali: 90, Omar: 78}
}
Dart

9. خاصية clear()

🔹 تزيل جميع العناصر من Map.

مثال:

void main() {
  Map<String, int> students = {'Ali': 90, 'Sara': 85};
  students.clear();
  print(students); // {}
}
Dart

10. خاصية forEach()

🔹 تُستخدم لتنفيذ دالة على كل عنصر في Map.

مثال:

void main() {
  Map<String, int> students = {'Ali': 90, 'Sara': 85, 'Omar': 78};
  
  students.forEach((key, value) {
    print('$key حصل على درجة: $value');
  });
}
// الناتج:
// Ali حصل على درجة: 90
// Sara حصل على درجة: 85
// Omar حصل على درجة: 78
Dart

11. خاصية update()

🔹 تُستخدم لتحديث قيمة مفتاح معين، وإذا لم يكن المفتاح موجودًا، يمكن إضافة قيمة افتراضية.

مثال:

void main() {
  Map<String, int> students = {'Ali': 90, 'Sara': 85};
  
  students.update('Ali', (value) => value + 5);
  print(students); // {Ali: 95, Sara: 85}
  
  // تحديث أو إضافة مفتاح جديد باستخدام `ifAbsent`
  students.update('Omar', (value) => value, ifAbsent: () => 80);
  print(students); // {Ali: 95, Sara: 85, Omar: 80}
}
Dart

12. خاصية addAll()

🔹 تُستخدم لإضافة عدة عناصر جديدة إلى Map.

مثال:

void main() {
  Map<String, int> students = {'Ali': 90, 'Sara': 85};
  students.addAll({'Omar': 78, 'Lina': 88});
  print(students); // {Ali: 90, Sara: 85, Omar: 78, Lina: 88}
}
Dart

13. خاصية map()

🔹 تُرجع نسخة جديدة من Map بعد تعديل كل عنصر فيها.

مثال:

void main() {
  Map<String, int> students = {'Ali': 90, 'Sara': 85, 'Omar': 78};
  
  var newStudents = students.map((key, value) => MapEntry(key, value + 5));
  
  print(newStudents); // {Ali: 95, Sara: 90, Omar: 83}
}
Dart

14. خاصية cast<>()

🔹 تُستخدم لتحويل Map إلى نوع آخر من المفاتيح أو القيم.

مثال:

void main() {
  Map<dynamic, dynamic> mixedMap = {'Ali': 90, 1: 'one'};
  
  Map<String, int> typedMap = mixedMap.cast<String, int>();
  print(typedMap); // قد يحدث خطأ إذا لم تكن الأنواع متوافقة
}
Dart

💡 الخلاصة

  • Map تحتوي على عدة خصائص تساعدك على التعامل مع البيانات بسهولة.
  • يمكنك إضافة، تعديل، حذف، والتحقق من وجود عناصر باستخدام هذه الخصائص.
  • عند الحاجة إلى التكرار أو التحديث الجماعي، استخدم forEach() أو update().