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. إزالة عنصر
dartCopyEdit<code>void main() {
Map<String, int> scores = {'Ali': 90, 'Sara': 85};
scores.remove('Sara');
print(scores); // {Ali: 90}
}
</code>
Dart
4. التحقق من وجود مفتاح
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. التكرار على العناصر
مثال:
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
عندما تحتاج إلى البحث السريع عن قيم بناءً على مفتاح.
- حاول دائمًا التأكد من فريدة المفاتيح لتجنب الأخطاء.