خصائص 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)
}
Dart2. خاصية values
🔹 تُرجع مجموعة (Iterable) تحتوي على جميع القيم المخزنة في الـ Map
.
مثال:
void main() {
Map<String, int> students = {'Ali': 90, 'Sara': 85, 'Omar': 78};
print(students.values); // (90, 85, 78)
}
Dart3. خاصية length
🔹 تُرجع عدد الأزواج (المفتاح-القيمة) المخزنة في Map
.
مثال:
void main() {
Map<String, int> students = {'Ali': 90, 'Sara': 85, 'Omar': 78};
print(students.length); // 3
}
Dart4. خاصية isEmpty
🔹 تُرجع true
إذا كانت Map
فارغة، وإلا false
.
مثال:
void main() {
Map<String, int> students = {};
print(students.isEmpty); // true
}
Dart5. خاصية isNotEmpty
🔹 تُرجع true
إذا كانت Map
تحتوي على عناصر، وإلا false
.
مثال:
void main() {
Map<String, int> students = {'Ali': 90};
print(students.isNotEmpty); // true
}
Dart6. خاصية containsKey()
🔹 تتحقق مما إذا كانت Map
تحتوي على مفتاح معين، وترجع true
إذا كان المفتاح موجودًا.
مثال:
void main() {
Map<String, int> students = {'Ali': 90, 'Sara': 85};
print(students.containsKey('Ali')); // true
print(students.containsKey('Omar')); // false
}
Dart7. خاصية containsValue()
🔹 تتحقق مما إذا كانت Map
تحتوي على قيمة معينة، وترجع true
إذا كانت القيمة موجودة.
مثال:
void main() {
Map<String, int> students = {'Ali': 90, 'Sara': 85};
print(students.containsValue(90)); // true
print(students.containsValue(100)); // false
}
Dart8. خاصية remove()
🔹 تُستخدم لإزالة عنصر من Map
باستخدام مفتاحه.
مثال:
void main() {
Map<String, int> students = {'Ali': 90, 'Sara': 85, 'Omar': 78};
students.remove('Sara');
print(students); // {Ali: 90, Omar: 78}
}
Dart9. خاصية clear()
🔹 تزيل جميع العناصر من Map
.
مثال:
void main() {
Map<String, int> students = {'Ali': 90, 'Sara': 85};
students.clear();
print(students); // {}
}
Dart10. خاصية 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
Dart11. خاصية 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}
}
Dart12. خاصية 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}
}
Dart13. خاصية 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}
}
Dart14. خاصية 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()
.