الربط والتسطيح
associate وflatMap
الربط والتسطيح درس مجاني في Kotlin Academy على CoddyKit. هذا هو الدرس 4 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Kotlin Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Kotlin Academy 4 دروس في المجموع.
الربط والتسطيح
إليكم أداتين إضافيتين فعّالتين للمجموعات: تنشئ دوال عائلة associate خرائط من قائمة، بينما تحوّل flatMap وflatten المجموعات المتداخلة إلى مجموعة مسطّحة واحدة.
دالة associateWith
تستخدم associateWith كل عنصر مفتاحًا، وتحسب قيمته باستخدام دالة lambda، فتنتج Map.
fun main() {
val words = listOf("a", "bb", "ccc")
val lengths = words.associateWith { it.length }
println(lengths)
}دالة associateBy
تعمل associateBy بطريقة معاكسة: تحسب المفتاح من كل عنصر، مع الاحتفاظ بالعنصر بوصفه القيمة.
data class User(val id: Int, val name: String)
fun main() {
val users = listOf(User(1, "Ann"), User(2, "Bob"))
val byId = users.associateBy { it.id }
println(byId[2]?.name)
}دالة associate
تتيح لكم associate العامة إنشاء المفتاح والقيمة معًا، وذلك بإرجاع Pair لكل عنصر.
fun main() {
val names = listOf("Ann", "Bob", "Cy")
val map = names.associate { it to it.length }
println(map)
}المفاتيح المكررة
إذا أنتج عنصران المفتاح نفسه في إحدى دوال associate، يفوز العنصر الأخير. حافظوا على فرادة المفاتيح عندما تحتاجون إلى الاحتفاظ بكل عنصر.
fun main() {
val words = listOf("apple", "ant", "bee")
val byFirst = words.associateBy { it.first() }
println(byFirst)
}دالة flatten
تأخذ flatten مجموعة من المجموعات وتدمجها في قائمة مسطّحة واحدة.
fun main() {
val nested = listOf(listOf(1, 2), listOf(3, 4), listOf(5))
val flat = nested.flatten()
println(flat)
}دالة flatMap
تحوّل flatMap كل عنصر إلى مجموعة، ثم تسطّح جميع هذه المجموعات في قائمة واحدة. إنها تجمع بين map وflatten في خطوة واحدة.
fun main() {
val words = listOf("hi", "ok")
val chars = words.flatMap { it.toList() }
println(chars)
}flatMap مع البيانات المتداخلة
تُعدّ flatMap مثالية لتوسيع البنى المتداخلة إلى تسلسل واحد من العناصر.
data class Team(val members: List<String>)
fun main() {
val teams = listOf(Team(listOf("Ann", "Bob")), Team(listOf("Cy")))
val everyone = teams.flatMap { it.members }
println(everyone)
}flatMap مقابل map
استخدموا map عندما ينتج كل عنصر نتيجة واحدة بالضبط. واستخدموا flatMap عندما ينتج كل عنصر مجموعة وتريدون دمجها جميعًا في قائمة مسطّحة واحدة.
fun main() {
val numbers = listOf(1, 2, 3)
val mapped = numbers.map { listOf(it, it * 10) }
val flat = numbers.flatMap { listOf(it, it * 10) }
println("map: $mapped")
println("flatMap: $flat")
}دمج associate وflatMap
غالبًا ما تظهر هذه الأدوات معًا في مسارات معالجة البيانات: تسطيح البيانات المتداخلة، ثم ربطها في خريطة بحث للوصول السريع.
data class Order(val items: List<String>)
fun main() {
val orders = listOf(Order(listOf("pen", "ink")), Order(listOf("pen")))
val counts = orders.flatMap { it.items }.groupingBy { it }.eachCount()
println(counts)
}متى تستخدمون كل دالة
اختاروا associateBy/associateWith لإنشاء خرائط بحث سريعة من القوائم، وflatMap/flatten لتسطيح المجموعات المتداخلة. فهي تجعل التعامل مع البيانات المنظّمة موجزًا وواضحًا.
تحقق سريع
ماذا تفعل flatMap؟
مراجعة
تعلّمتم إنشاء الخرائط باستخدام associate وassociateBy وassociateWith (يفوز آخر مفتاح مكرر)، وتسطيح البنى المتداخلة باستخدام flatten وflatMap. وبذلك تكتمل مجموعة أدواتكم للتعامل مع المجموعات، من تحويل البيانات وتنظيمها وتجميعها إلى إعادة هيكلتها.
الأسئلة الشائعة
هل درس «الربط والتسطيح» مجاني؟
نعم — نص درس «الربط والتسطيح» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Kotlin Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Kotlin Academy 4 دروس في المجموع.
ماذا ستتعلم في «الربط والتسطيح»؟
associate وflatMap تتمرن على Kotlin Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ Kotlin Academy؟
لا تُشترط خبرة سابقة. Kotlin Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 4 من أصل 4.
كم من الوقت يستغرق درس «الربط والتسطيح»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس Kotlin Academy هذا؟
نعم. كل درس في Kotlin Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- التصفية والتحويل
- التجميع والتقسيم
- التجميع
- الربط والتسطيح