الإضافة إلى القائمة: insert
جزء من قسم Logic & Flow في رحلة Dart على Coddy — الدرس 4 من 65.
عندما تحتاج إلى إضافة عنصر إلى موضع محدد في قائمة، تمنحك الطريقة insert() تحكماً دقيقاً في المكان الذي يوضع فيه العنصر الجديد. على عكس الطريقة add()، التي تضيف العناصر دائماً إلى نهاية القائمة، تسمح لك insert() بوضع عنصر في أي موضع تختاره.
تأخذ الطريقة insert() معاملين: موضع الفهرس الذي تريد إدراج العنصر فيه، والعنصر نفسه. عند إدراج عنصر، يتم إزاحة جميع العناصر الموجودة في ذلك الموضع وما بعده بمقدار موضع واحد إلى اليمين.
List<String> tasks = ['Buy groceries', 'Walk the dog', 'Read a book'];
// إدراج مهمة جديدة في البداية (الفهرس 0)
tasks.insert(0, 'Check emails');
print(tasks); // ['Check emails', 'Buy groceries', 'Walk the dog', 'Read a book']تعد هذه الطريقة مفيدة بشكل خاص عندما يكون ترتيب العناصر مهماً، مثل قوائم الأولويات، أو الجداول الزمنية، أو أي موقف تحتاج فيه إلى الحفاظ على تسلسل معين. إن القدرة على الإدراج في أي موضع تجعل من insert() أداة قوية لإدارة المجموعات المرتبة.
التحدي
سهلقم بإنشاء برنامج يدير نظام مهام ذات أولوية عن طريق إدراج المهام العاجلة في مواقع محددة في قائمة مهام موجودة. يجب على برنامجك القيام بما يلي:
- قراءة مدخل نصي (string) يمثل اسم قائمة المهام
- قراءة مدخلات نصية متعددة تمثل المهام الموجودة (سينتهي الإدخال عندما تتلقى سلسلة فارغة)
- قراءة مدخل نصي يمثل مهمة عاجلة لإدراجها
- قراءة مدخل عددي (integer) يمثل الموقع الذي يجب إدراج المهمة العاجلة فيه
- استخدام التابع
insert()لإضافة المهمة العاجلة في الموقع المحدد - طباعة قائمة المهام المحدثة بالتنسيق الدقيق الموضح أدناه
على سبيل المثال، إذا كان اسم قائمة المهام هو "Work Schedule"، والمهام الموجودة هي "Review documents"، "Team meeting"، "Submit report"، والمهمة العاجلة هي "Client call"، والموقع هو 1، فيجب أن يخرج برنامجك ما يلي:
Task List: Work Schedule
Original tasks: [Review documents, Team meeting, Submit report]
Inserted: Client call at position 1
Updated tasks: [Review documents, Client call, Team meeting, Submit report]
Total tasks: 4إذا كان اسم قائمة المهام هو "Daily Goals"، والمهام الموجودة هي "Exercise"، "Read book"، والمهمة العاجلة هي "Buy groceries"، والموقع هو 0، فيجب أن يخرج برنامجك ما يلي:
Task List: Daily Goals
Original tasks: [Exercise, Read book]
Inserted: Buy groceries at position 0
Updated tasks: [Buy groceries, Exercise, Read book]
Total tasks: 3يجب أن يستخدم برنامجك التابع insert() لإضافة المهمة العاجلة في الموقع المحدد. سيكون مدخل الموقع دائماً فهرساً (index) صالحاً (بين 0 وطول قائمة المهام الموجودة).
ورقة مرجعية
تتيح لك الطريقة insert() إضافة عنصر في موضع محدد في القائمة. وهي تأخذ معلمتين: موضع الفهرس والعنصر المراد إدراجه.
List<String> tasks = ['Buy groceries', 'Walk the dog', 'Read a book'];
// إدراج في الفهرس 0 (البداية)
tasks.insert(0, 'Check emails');
print(tasks); // ['Check emails', 'Buy groceries', 'Walk the dog', 'Read a book']عند إدراج عنصر، يتم إزاحة جميع العناصر الموجودة في ذلك الموضع وما بعده موضعاً واحداً إلى اليمين. هذه الطريقة مفيدة للحفاظ على المجموعات المرتبة حيث يكون الموضع مهماً.
جرّب بنفسك
import 'dart:io';
void main() {
// قراءة اسم قائمة المهام
String? taskListName = stdin.readLineSync();
// قراءة المهام الموجودة حتى يتم إدخال سلسلة فارغة
List<String> tasks = [];
while (true) {
String? task = stdin.readLineSync();
if (task == null || task.isEmpty) {
break;
}
tasks.add(task);
}
// قراءة المهمة العاجلة وموقعها
String? urgentTask = stdin.readLineSync();
int position = int.parse(stdin.readLineSync()!);
// TODO: اكتب الكود الخاص بك أدناه
// استخدم التابع insert() لإضافة المهمة العاجلة في الموقع المحدد
// طباعة النتائج بالتنسيق المطلوب
print('Task List: $taskListName');
print('Original tasks: $tasks');
print('Inserted: $urgentTask at position $position');
// طباعة المهام المحدثة والعدد الإجمالي
}يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس Logic & Flow
1التعامل المتقدم مع القوائم
خصائص القائمة: first و lastحالة القائمة: isEmpty و isNotEmptyعكس القائمةالإضافة إلى القائمة: insertالحذف من القائمة: removeWhereالبحث في القائمة: indexOfفرز القائمةخلط القائمةملخص - منظم القوائم4معالجة الـ Map المتقدمة
التكرار عبر الـ Mapالتحقق من المفاتيح والقيمخصائص الـ Map: keys و valuesإضافة مشروطة: putIfAbsentإزالة العناصر من الـ Mapالـ Maps المتداخلةمراجعة - تحديث المخزون2عمليات القوائم الوظيفية
التحويل باستخدام 'map'التصفية باستخدام 'where'استخدام '.toList()'التحقق من الشروط باستخدام 'any'الشروط باستخدام 'every'البحث باستخدام 'firstWhere'مراجعة - تصفية البيانات5مشروع: حاسبة عربة التسوق
إعداد المشروعإضافة العناصر إلى العربة3المجموعات
ما هي المجموعة؟إنشاء مجموعةالإضافة والحذف من المجموعاتالتحقق من وجود عناصر في المجموعةتحويل قائمة إلى مجموعةاتحاد المجموعاتتقاطع المجموعاتالفرق بين المجموعاتمراجعة - قائمة ضيوف فريدة