0Pricing
Kotlin Academy · درس

التجميع والتقسيم

نظّموا البيانات

التجميع والتقسيم درس مجاني في Kotlin Academy على CoddyKit. هذا هو الدرس 2 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Kotlin Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Kotlin Academy 4 دروس في المجموع.

تنظيم البيانات

قد تحتاجون أحيانًا إلى تقسيم مجموعة إلى فئات. توفّر Kotlin الدالة groupBy لتجميع العناصر في مجموعات وفق مفتاح، والدالة partition لتقسيمها إلى قائمتين وفق شرط.

دالة partition

تقسّم partition المجموعة إلى Pair يتكوّن من قائمتين: عناصر تطابق الشرط، وعناصر لا تطابقه.

fun main() {
    val numbers = listOf(1, 2, 3, 4, 5, 6)
    val (even, odd) = numbers.partition { it % 2 == 0 }
    println("Even: $even")
    println("Odd: $odd")
}

تفكيك Pair

بما أن partition تُرجع Pair، يمكنكم تفكيكه مباشرةً إلى متغيرين مسمّيين، كما هو موضّح أعلاه. ويمكنكم أيضًا الوصول إلى .first و.second.

fun main() {
    val result = listOf(10, -5, 3, -8).partition { it >= 0 }
    println(result.first)
    println(result.second)
}

دالة groupBy

تنشئ groupBy كائن Map يكون فيه كل مفتاح ناتجًا عن المحدِّد، وتكون القيمة قائمة العناصر التي تشترك في ذلك المفتاح.

fun main() {
    val words = listOf("apple", "banana", "avocado", "cherry")
    val byFirstLetter = words.groupBy { it.first() }
    println(byFirstLetter)
}

التجميع باستخدام مفتاح محسوب

يمكن أن تكون قيمة المفتاح أي قيمة محسوبة، مثل طول سلسلة نصية أو باقي القسمة.

fun main() {
    val numbers = listOf(1, 2, 3, 4, 5, 6, 7)
    val byRemainder = numbers.groupBy { it % 3 }
    println(byRemainder)
}

‏groupBy مع تحويل القيم

تقبل groupBy دالة lambda ثانية تحوّل كل قيمة قبل وضعها في المجموعة.

fun main() {
    val words = listOf("red", "rose", "blue", "berry")
    val grouped = groupExample(words)
    println(grouped)
}

fun groupExample(words: List<String>) =
    words.groupBy({ it.first() }, { it.uppercase() })

التكرار على المجموعات

بما أن groupBy تُرجع Map، يمكنكم التكرار على الإدخالات لمعالجة كل مجموعة.

fun main() {
    val animals = listOf("cat", "cow", "dog", "duck")
    val groups = animals.groupBy { it.first() }
    for ((letter, list) in groups) {
        println("$letter -> $list")
    }
}

العد باستخدام groupingBy

لإجراء العد لكل مفتاح، يكون استخدام groupingBy متبوعًا بـ eachCount فعالًا وواضحًا.

fun main() {
    val letters = listOf("a", "b", "a", "c", "b", "a")
    val counts = letters.groupingBy { it }.eachCount()
    println(counts)
}

‏partition مقابل filter

عندما تحتاجون إلى العناصر المطابقة فقط، استخدموا filter. وعندما تحتاجون إلى العناصر المطابقة وغير المطابقة معًا، تنفّذ partition ذلك في مرور واحد وتُرجع القائمتين.

fun main() {
    val ages = listOf(15, 22, 17, 30, 12)
    val (adults, minors) = ages.partition { it >= 18 }
    println("Adults: $adults, Minors: $minors")
}

اختيار groupBy أم partition

استخدموا partition عندما تحتاجون إلى مجموعتين فقط تحددهما حالة نعم/لا. واستخدموا groupBy عندما يمكن أن توجد مجموعات كثيرة يُحدّدها أحد الخصائص.

التجميع عمليًا

يستبدل التجميع والتقسيم الحلقات اليدوية المطوّلة بخرائط وقوائم. كما يعبّران عن الغرض بوضوح ويقلّلان أخطاء إدارة البيانات.

تحقق سريع

ماذا تُرجع partition؟

مراجعة

تعلّمتم استخدام partition لتقسيم العناصر إلى قائمتين وفق شرط، وgroupBy لتجميعها في خريطة وفق مفتاح، بالإضافة إلى groupingBy().eachCount() لحساب الأعداد. بعد ذلك ستختزلون المجموعات إلى قيم مفردة باستخدام التجميع.

الأسئلة الشائعة

هل درس «التجميع والتقسيم» مجاني؟

نعم — نص درس «التجميع والتقسيم» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Kotlin Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Kotlin Academy 4 دروس في المجموع.

ماذا ستتعلم في «التجميع والتقسيم»؟

نظّموا البيانات تتمرن على Kotlin Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ Kotlin Academy؟

لا تُشترط خبرة سابقة. Kotlin Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 2 من أصل 4.

كم من الوقت يستغرق درس «التجميع والتقسيم»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس Kotlin Academy هذا؟

نعم. كل درس في Kotlin Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. التصفية والتحويل
  2. التجميع والتقسيم
  3. التجميع
  4. الربط والتسطيح
← العودة إلى Kotlin Academy