تقسيم القوائم باستخدام SubList
جزء من قسم الأساسيات في رحلة Kotlin على Coddy. الدرس 79 من 93.
أحيانًا تحتاج إلى استخراج جزء من قائمة بدلًا من العمل مع المجموعة بأكملها. تتيح لك الطريقة subList() إنشاء عرض لنطاق محدد من العناصر من قائمة موجودة.
تأخذ طريقة subList() معاملين: الفهرس الابتدائي (شامل) والفهرس النهائي (غير شامل). وهذا يعني أن العنصر الموجود عند الفهرس الابتدائي مُضمَّن، بينما العنصر الموجود عند الفهرس النهائي غير مُضمَّن:
val numbers = listOf(10, 20, 30, 40, 50)
val slice = numbers.subList(1, 4)
println(slice) // [20, 30, 40]في هذا المثال، تستخرج subList(1, 4) العناصر بدءًا من الفهرس 1 وحتى (دون تضمين) الفهرس 4. وهذا يعطينا العناصر الثانية والثالثة والرابعة.
القائمة الفرعية الناتجة هي عرض للقائمة الأصلية، وليست نسخة منها. من المهم فهم ذلك عند العمل مع القوائم القابلة للتغيير، إذ يمكن أن تؤثر التغييرات التي تُجرى على القائمة الأصلية في القائمة الفرعية.
بالنسبة لمعظم حالات الاستخدام مع القوائم للقراءة فقط، يمكنك ببساطة استخدامها للوصول إلى نطاق من العناصر:
val days = listOf("Mon", "Tue", "Wed", "Thu", "Fri")
val midWeek = days.subList(1, 4)
println(midWeek) // [Tue, Wed, Thu]التحدي
متوسطستتلقى قائمة من الأعداد الصحيحة ومؤشرين يمثلان نطاقًا. استخرج قائمة فرعية باستخدام subList() واطبع مجموع العناصر المستخرجة.
تنسيق الإدخال:
- السطر الأول: عدد صحيح
nيمثل عدد العناصر - الأسطر
nالتالية: أعداد صحيحة لإضافتها إلى القائمة - السطر التالي: فهرس البداية (شاملًا)
- السطر الأخير: فهرس النهاية (غير شامل)
تنسيق الإخراج:
اطبع مجموع العناصر في القائمة الفرعية المستخرجة.
مثال:
إذا كانت القائمة هي [5, 10, 15, 20, 25] مع فهرس بداية 1 وفهرس نهاية 4، فستكون القائمة الفرعية [10, 15, 20]، ويجب أن يكون الناتج 45.
جرّب بنفسك
fun main() {
val n = readLine()!!.toInt()
val list = mutableListOf<Int>()
repeat(n) {
list.add(readLine()!!.toInt())
}
val startIndex = readLine()!!.toInt()
val endIndex = readLine()!!.toInt()
// TODO: اكتب الكود الخاص بك أدناه
// استخدم subList() لاستخراج العناصر من startIndex إلى endIndex
// احسب واطبع مجموع العناصر المستخرجة
}يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس الأساسيات
4العوامل - الجزء الأول
العوامل الحسابيةعامل باقي القسمةالإسناد المُعزَّزعوامل المقارنةمراجعة - الرياضيات البسيطة7أساسيات الإدخال والإخراج
دالة Printlnقوالب السلاسل النصيةإدخال ReadLineتحويل النوعمراجعة - السنوات حتى التقاعدمراجعة - صواب أم خطأ10الدوال
تعريف دالةالمعاملات والوسائطالقيم المُعادةالوسائط المُسمّاةالقيم الافتراضيةالدوال ذات التعبير الواحدمراجعة - دالة سيغمامراجعة - دالة التحقق2المتغيرات
val مقابل varاستنتاج النوعالأعدادالسلسلة النصيةالقيمة المنطقيةاصطلاحات التسميةمراجعة - تهيئة المتغيرات5المعاملات الجزء 2
المعاملات المنطقية الجزء 1المعاملات المنطقية الجزء 2المعاملات المنطقية الجزء 3المعامل الثلاثي مع تعبير Ifمراجعة - المنطق البسيط8حاسبة تقسيم الفاتورة
رسالة ترحيبيةالحصول على الإدخال14القوائم المتقدمة
تقسيم القوائم باستخدام SubListتقسيم القوائم باستخدام Take وDropعوامل التسلسلاتطريقة Containsمراجعة - البحث في صفحة3القابلية للقيمة الفارغة
ما هو الأمان من القيم الفارغةالأنواع القابلة للقيمة الفارغةعامل الاستدعاء الآمنعامل Elvisأساسيات تحدي الدوالتأكيد عدم كون القيمة فارغةمراجعة - الوصول الآمن9الحلقات
حلقة Forحلقة Whileحلقة Do-WhileBreakContinueالنطاقات في الحلقاتالحلقة المتداخلةمراجعة - المضروبمراجعة - الإدخال الديناميكيتدرّب بنفسك: Playground لـ Kotlin