filter وmap وfind على المجموعات
طبّق lambdas لتحويل المجموعات وتصفيتها باستخدام دوال المكتبة القياسية.
filter وmap وfind على المجموعات درس مجاني في Kotlin Academy على CoddyKit. هذا هو الدرس 4 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Kotlin Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Kotlin Academy 4 دروس في المجموع.
الدوال العملية الثلاث
تُبقي filter على العناصر المطابقة لدالة predicate. وتحول map كل عنصر. وتُرجع find أول عنصر مطابق (أو null). وتغطي هذه الدوال معًا معظم عمليات معالجة المجموعات.
أساسيات filter
تُرجع filter قائمة جديدة تحتوي فقط على العناصر التي تكون دالة predicate الخاصة بها true.
fun main() {
val nums = listOf(1, 2, 3, 4, 5, 6)
val evens = nums.filter { it % 2 == 0 }
println(evens) // [2, 4, 6]
}أساسيات map
تُرجع map قائمة جديدة بالحجم نفسه، بعد تحويل كل عنصر بواسطة lambda.
fun main() {
val nums = listOf(1, 2, 3)
val squares = nums.map { it * it }
println(squares) // [1, 4, 9]
}أساسيات find
تُرجع find أول عنصر يطابق دالة predicate، أو null إذا لم يطابق أي عنصر.
fun main() {
val words = listOf("apple", "banana", "cherry")
val match = words.find { it.startsWith("b") }
println(match) // banana
}تسلسل filter وmap
ادمجوا بينهما باستخدام صيغة النقطة لإنشاء مسارات معالجة واضحة ومعبّرة.
fun main() {
val nums = listOf(1, 2, 3, 4, 5)
val result = nums.filter { it % 2 == 1 }.map { it * 10 }
println(result) // [10, 30, 50]
}تصفية مثيلات data class
تتألق filter وmap عند استخدامهما مع مجموعات من مثيلات data class.
data class User(val name: String, val age: Int)
fun main() {
val users = listOf(User("Ana", 17), User("Ben", 25), User("Cal", 31))
val adultNames = users.filter { it.age >= 18 }.map { it.name }
println(adultNames) // [Ben, Cal]
}مقارنة find وfirst
تُرجع find قيمة قابلة لـ null، بينما تؤدي first { ... } إلى طرح استثناء إذا لم توجد مطابقة. استخدموا find عند البحث عن مطابقة اختيارية.
fun main() {
val nums = listOf(1, 2, 3)
println(nums.find { it > 10 }) // null
// nums.first { it > 10 } // throws NoSuchElementException
println(nums.firstOrNull { it > 10 }) // null (alias of find)
}filterNot وfilterNotNull
تعكس filterNot نتيجة دالة predicate. أما filterNotNull فتزيل الإدخالات التي تساوي null من قائمة تحتوي على قيم قابلة لـ null.
fun main() {
val nums = listOf(1, 2, 3, 4)
println(nums.filterNot { it % 2 == 0 }) // [1, 3]
val maybe: List<String?> = listOf("a", null, "b", null, "c")
println(maybe.filterNotNull()) // [a, b, c]
}mapNotNull
تحوّل mapNotNull العناصر ثم تزيل القيم التي تساوي null — وهي مفيدة عند التحليل.
fun main() {
val raw = listOf("1", "two", "3", "four")
val numbers = raw.mapNotNull { it.toIntOrNull() }
println(numbers) // [1, 3]
}مسار معالجة واقعي
مثال صغير يجمع بين filter وmap وتقليص نهائي للنتيجة.
data class Product(val name: String, val price: Double, val inStock: Boolean)
fun main() {
val products = listOf(
Product("Pen", 1.0, true),
Product("Book", 12.0, false),
Product("Lamp", 25.0, true)
)
val total = products
.filter { it.inStock }
.map { it.price }
.sum()
println("Available total: $total") // 26.0
}الاختيار بين العمليات
استخدموا filter عندما تريدون مجموعة فرعية، وmap لتحويل العناصر، وfind للعثور على مطابقة اختيارية واحدة، وسلسلوا بينها عند الحاجة.
fun main() {
val words = listOf("alpha", "beta", "gamma", "delta")
println(words.filter { it.length == 5 }) // [alpha, gamma, delta]
println(words.map { it.uppercase() }) // [ALPHA, BETA, GAMMA, DELTA]
println(words.find { it.endsWith("ta") }) // beta
}تحقق سريع
أي دالة تُرجع مجموعة جديدة بعد تحويل عناصرها بواسطة lambda؟
مراجعة
تختار filter العناصر، وتحول map العناصر، وتحدد find أول مطابقة (أو null). ادمجوا بينها بحرية في مسارات المعالجة؛ واستخدموا mapNotNull وfilterNotNull عند التعامل مع القيم الاختيارية.
تعلم Kotlin مع معلم ذكاء اصطناعي — مجانًا
اكتب وقم بتشغيل أكوادك الفعلية في المتصفح، واحصل على مساعدة فورية من معلم ذكاء اصطناعي متاح 24/7، واستمر من حيث توقفت على الويب أو في التطبيق.
- الدورات
- 51
- الدروس
- 203
الأسئلة الشائعة
هل درس «filter وmap وfind على المجموعات» مجاني؟
نعم — نص درس «filter وmap وfind على المجموعات» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Kotlin Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Kotlin Academy 4 دروس في المجموع.
ماذا ستتعلم في «filter وmap وfind على المجموعات»؟
طبّق lambdas لتحويل المجموعات وتصفيتها باستخدام دوال المكتبة القياسية. تتمرن على Kotlin Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ Kotlin Academy؟
لا تُشترط خبرة سابقة. Kotlin Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 4 من أصل 4.
كم من الوقت يستغرق درس «filter وmap وfind على المجموعات»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس Kotlin Academy هذا؟
نعم. كل درس في Kotlin Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- ما هي Lambda؟ الصياغة والأنواع
- تمرير Lambdas إلى الدوال
- it: المعامل الضمني
- filter وmap وfind على المجموعات