تُستخدم القوائم في لغة دارت لتخزين قيم متعددة في متغير واحد. تشبه القوائم في دارت المصفوفات في لغات البرمجة الأخرى. على سبيل المثال، يمكنك استخدام قائمة لتخزين أسماء طلاب متعددين. تُمثل القائمة بين قوسين مربعين []. سنتعرف على كيفية إنشاء قوائم وأنواع القوائم وكيفية الوصول إلى عناصر القائمة وتغيير قيمها والعديد من العمليات الأخرى المتعلقة بالقوائم في لغة دارت.
كيفية إنشاء قائمة List في دارت:
يمكنك إنشاء قائمة بتحديد العناصر الأولية داخل قوسين مربعين. يُستخدم القوسين المربعين [] لتمثيل القائمة.
// قائمة الأعداد الصحيحة List<int> ages = [10, 30, 23]; // قائمة السلاسل النصية List<String> names = ["راج", "جون", "روكي"]; // قائمة مختلطة var mixed = [18.8, 10, "جون"];
أنواع القوائم List في دارت:
- قائمة ذات طول ثابت (Fixed Length List)
- قائمة قابلة للتوسع (Growable List)
قائمة ذات طول ثابت (Fixed Length List):
تُعرف القوائم ذات الطول الثابت بتحديد الطول المحدد. لا يمكنك تغيير حجم القائمة أثناء التشغيل. ستنشئ هذه القائمة من 5 أعداد صحيحة بقيمة 0.
void main() { var list = List<int>.filled(5, 0); print(list); }
نتيجة الكود:
[0, 0, 0, 0, 0]
قائمة قابلة للتوسع (Growable List):
تُعرف القوائم القابلة للتوسع بدون تحديد طول محدد. يمكن تغيير طول القائمة القابلة للتوسع أثناء التشغيل.
void main() { var list1 = [210, 21, 22, 33, 44, 55]; print(list1); }
نتيجة الكود:
[210, 21, 22, 33, 44, 55]
الوصول إلى عنصر في القائمة List:
يمكنك الوصول إلى عنصر في القائمة عن طريق الـ index الخاص به. يجب أن تتذكر أن الـ index في القائمة يبدأ دائمًا من 0.
void main() { var list = [210, 21, 22, 33, 44, 55]; print(list[0]); print(list[1]); print(list[2]); print(list[3]); print(list[4]); print(list[5]); }
نتيجة الكود:
210 21 22 33 44 55
الحصول على index عنصر بواسطة قيمته:
يمكنك أيضًا الحصول على الـ index الخاص بالعنصر في القائمة عن طريق قيمته.
void main() { var list = [210, 21, 22, 33, 44, 55]; print(list.indexOf(22)); print(list.indexOf(33)); }
نتيجة الكود:
2 3
معرفة طول القائمة List في دارت:
يمكنك معرفة طول القائمة باستخدام خاصية .length
.
void main(){ List<String> names = ["راج", "جون", "روكي"]; print(names.length); }
نتيجة الكود:
3
تغيير قيم القائمة List في دارت:
يمكنك أيضًا تغيير قيم القائمة في دارت. يمكنك فعل ذلك عن طريق listName[index]=value.
void main(){ List<String> names = ["Raj", "John", "Rocky"]; names[1] = "Bill"; names[2] = "Elon"; print(names); }
نتيجة الكود:
[Raj, Bill, Elon]
قائمة قابلة للتعديل وقائمة غير قابلة للتعديل:
قائمة قابلة للتعديل تعني أنه يمكن تغييرها بعد الإعلان عنها، أما القائمة غير القابلة للتعديل فتعني أنها لا يمكن تغييرها بعد الإعلان عنها.
List<String> names = ["Raj", "John", "Rocky"]; // قائمة قابلة للتعديل names[1] = "Bill"; // ممكن names[2] = "Elon"; // ممكن const List<String> names = ["Raj", "John", "Rocky"]; // قائمة غير قابلة للتعديل names[1] = "Bill"; // غير ممكن names[2] = "Elon"; // غير ممكن
خصائص القائمة List في دارت:
first
: يُرجع العنصر الأول في القائمة.last
: يُرجع العنصر الأخير في القائمة.isEmpty
: يُرجع القيمةtrue
إذا كانت القائمة فارغة والقيمةfalse
إذا كانت القائمة غير فارغة.isNotEmpty
: يُرجع القيمةtrue
إذا كانت القائمة غير فارغة والقيمةfalse
إذا كانت القائمة فارغة.length
: يُرجع طول القائمة.reversed
: يُرجع قائمة معكوسة.single
: يُستخدم للتحقق مما إذا كان لدى القائمة عنصر واحد فقط ويُرجعه.
الوصول للعنصر الأول والأخير في القائمة List:
يمكنك الوصول للعنصر الأول والأخير في القائمة عن طريق:
void main() { List<String> drinks = ["water", "juice", "milk", "coke"]; print("العنصر الأول في القائمة هو: ${drinks.first}"); print("العنصر الأخير في القائمة هو: ${drinks.last}"); }
نتيجة الكود:
العنصر الأول في القائمة هو: water العنصر الأخير في القائمة هو: coke
التحقق مما إذا كانت القائمة فارغة أم لا
يمكنك أيضًا التحقق مما إذا كانت القائمة تحتوي على أي عناصر أو لا. ستعطي النتيجة إما true
أو false
.
void main() { List<String> drinks = ["water", "juice", "milk", "coke"]; List<int> ages = []; print("هل القائمة تحتوي على عناصر؟ "+drinks.isNotEmpty.toString()); print("هل القائمة لا تحتوي على عناصر؟ "+drinks.isEmpty.toString()); print("هل القائمة تحتوي على عناصر؟ "+ages.isNotEmpty.toString()); print("هل القائمة لا تحتوي على عناصر؟ "+ages.isEmpty.toString()); }
نتيجة الكود:
هل القائمة تحتوي على عناصر؟ true هل القائمة لا تحتوي على عناصر؟ false هل القائمة تحتوي على عناصر؟ false هل القائمة لا تحتوي على عناصر؟ true
عكس القائمة List في دارت:
يمكنك عكس القائمة بسهولة باستخدام خاصية .reversed. هنا مثال أدناه:
void main() { List<String> drinks = ["water", "juice", "milk", "coke"]; print("List in reverse: ${drinks.reversed}"); }
نتيجة الكود:
(coke, milk, juice, water)
اضافة العناصر الي القائمة List:
يوفر دارت أربع طرق لإدراج العناصر في القوائم. هذه الطرق هي:
- add
يضيف عنصر واحد ويعيد القائمة المعدلة. - addAll
يدرج العديد من القيم إلى القائمة المعطاة، وكل قيمة مفصولة بفواصل ومحاطة بمربعين ([]). - insert
يوفر إمكانية إدراج عنصر في موضع الـ index المحدد. - insertAll
يدرج العديد من القيم في موضع الـ index المحدد.
مثال 1: اضافة عناصر الى القائمة باستخدام add
في هذا المثال أدناه، نحن نضيف عنصر إلى القائمة evenList باستخدام طريقة add().
void main() { var evenList = [2,4,6,8,10]; print(evenList); evenList.add(12); print(evenList); }
نتيجة الكود:
[2, 4, 6, 8, 10] [2, 4, 6, 8, 10, 12]
مثال 2: اضافة عناصر الى القائمة باستخدام addAll
في هذا المثال أدناه، نحن نضيف عناصر إلى القائمة evenList باستخدام طريقة addAll().
void main() { var evenList = [2, 4, 6, 8, 10]; print(evenList); evenList.addAll([12, 14, 16, 18]); print(evenList); }
نتيجة الكود:
[2, 4, 6, 8, 10] [2, 4, 6, 8, 10, 12, 14, 16, 18]
مثال 3: اضافة عناصر الى القائمة باستخدام insert
في هذا المثال أدناه، نحن نضيف عنصر إلى القائمة myList باستخدام طريقة insert().
void main() { List myList = [3, 4, 2, 5]; print(myList); myList.insert(2, 15); print(myList); }
نتيجة الكود:
[3, 4, 2, 5] [3, 4, 15, 2, 5]
مثال 4: اضافة عناصر الى القائمة باستخدام insertAll
في هذا المثال أدناه، نحن نضيف عناصر إلى القائمة myList باستخدام طريقة insertAll().
void main() { var myList = [3, 4, 2, 5]; print(myList); myList.insertAll(1, [6, 7, 10, 9]); print(myList); }
نتيجة الكود:
[3, 4, 2, 5] [3, 6, 7, 10, 9, 4, 2, 5]
حذف العناصر من القائمة List:
- remove()
يزيل عنصر واحد من القائمة المعطاة. - removeAt()
يزيل عنصرا من موضع الـ index المحدد. - removeLast()
يزيل العنصر الأخير من القائمة المعطاة. - removeRange()
يزيل العناصر ضمن نطاق محدد.
مثال 1: حذف عناصر من القائمة باستخدام remove
في هذا المثال أدناه، نحن نزيل عنصر من القائمة باستخدام طريقة remove().
void main() { var list = [10, 20, 30, 40, 50]; print("List before removing element : ${list}"); list.remove(30); print("List after removing element : ${list}"); }
نتيجة الكود:
List before removing element : [10, 20, 30, 40, 50] List after removing element : [10, 20, 40, 50]
مثال 2: حذف عناصر من القائمة باستخدام removeAt
في هذا المثال أدناه، نحن نزيل عنصر من القائمة باستخدام طريقة removeAt().
void main() { var list = [10, 11, 12, 13, 14]; print("List before removing element : ${list}"); list.removeAt(3); print("List after removing element : ${list}"); }
نتيجة الكود:
List before removing element : [10, 11, 12, 13, 14] List after removing element : [10, 11, 12, 14]
مثال 3: حذف عناصر من القائمة باستخدام removeLast
في هذا المثال أدناه، نحن نزيل آخر عنصر من القائمة باستخدام طريقة removeLast().
void main() { var list = [10, 20, 30, 40, 50]; print("List before removing element:${list}"); list.removeLast(); print("List after removing last element:${list}"); }
نتيجة الكود:
List before removing element:[10, 20, 30, 40, 50] List after removing last element:[10, 20, 30, 40]
مثال 4: حذف عناصر من القائمة باستخدام removeRange
في هذا المثال أدناه، نحن نزيل نطاق معين من العناصر في القائمة باستخدام طريقة removeRange().
void main() { var list = [10, 20, 30, 40, 50]; print("List before removing element:${list}"); list.removeRange(0, 3); print("List after removing range element:${list}"); }
نتيجة الكود:
List before removing element:[10, 20, 30, 40, 50] List after removing range element:[40, 50]
استخدام حلقات التكرار مع القائمة Loops In List
يمكن استخدام حلقات مثل for loop، for each loop، أو أي نوع آخر من الحلقات.
مثال 1 باستخدام for each loop:
void main() { List<int> list = [10, 20, 30, 40, 50]; list.forEach((n) => print(n)); }
نتيجة الكود:
10 20 30 40 50
مثال 2 باستخدام for loop:
void main() { List<int> list = [10, 20, 30, 40, 50]; for(var n in list){ print(n); } }
نتيجة الكود:
10 20 30 40 50
استخدام الشروط في القائمة Conditions In List
يمكن أيضا استخدام الشروط في القائمة. هنا المتغير sad = false لذلك لا تحتوي عربة التسوق على الماء.
void main() { bool sad = false; var cart = ['milk', 'juice', if (sad) 'water']; print(cart);,[object Object],}
نتيجة الكود:
[milk, juice]
استخدام where مع القائمة
يمكن استخدام where مع القائمة لتصفية عناصر محددة. في هذا المثال، تتم تصفية الأرقام الزوجية فقط.
void main(){ List<int> numbers = [2,4,6,8,10,11,12,13,14]; List<int> even = numbers.where((number)=> number.isEven).toList(); print(even); }
نتيجة الكود:
[2, 4, 6, 8, 10, 12, 14]
هذا كان نظرة عامة على القوائم List في لغة دارت. يمكنك استخدام القوائم لتخزين وإدارة البيانات بشكل فعال. قدمنا لك بعض الأمثلة وشرحنا كيفية استخدام الأكواد للتعامل مع القوائم في لغة دارت. يمكنك استكشاف المزيد من الأمثلة وتجربة الأكواد المذكور أعلاه لتعزيز فهمك ومهاراتك في لغة دارت.