7

Collectionها؛ لیست، ست و مپ مثل آدم‌های منظم

وقتی داده‌ها زیاد می‌شن، دیگه با چندتا متغیر نمی‌شه قایق رو جلو برد.

درس 7 از 20

List و MutableList

`List` فقط خواندنیه؛ `MutableList` قابل تغییره. این تفاوت مهمه: یکی vitrine است، یکی انبار که می‌تونی جنس کم و زیاد کنی.

مثال را با چند مقدار دیگر هم امتحان کن؛ چون برنامه‌نویسی با نگاه کردن یاد گرفته نمی‌شود، با خراب کردن و درست کردن جا می‌افتد.

لیست‌ها
fun main() {
    val languages = listOf("Kotlin", "Java", "Python")
    println(languages[0])

    val tasks = mutableListOf("درس", "تمرین")
    tasks.add("پروژه")
    println(tasks)
}
خروجی یا نتیجه اجرا
Kotlin
[درس, تمرین, پروژه]
نکته کاربردی: این بخش اسکلت ذهنی درس را می‌سازد. وقتی بدانی این قطعه دقیقاً چه مسئله‌ای را حل می‌کند، بعداً موقع پروژه فقط syntax حفظی تحویل نمی‌دهی؛ تصمیم درست می‌گیری. اگر خروجی با چیزی که انتظار داشتی فرق کرد، اول مقدار متغیرها و مسیر اجرا را چک کن؛ ۹۰٪ باگ‌های اول راه همین‌جا قایم شده‌اند.

Set برای بدون تکراری‌ها

`Set` اجازه نمی‌ده مقدار تکراری نگه داری. مثل نگهبان باشگاهه؛ کارت تکراری ببینه راه نمی‌ده.

مثال را با چند مقدار دیگر هم امتحان کن؛ چون برنامه‌نویسی با نگاه کردن یاد گرفته نمی‌شود، با خراب کردن و درست کردن جا می‌افتد.

Set
val tags = setOf("android", "kotlin", "android")
println(tags) // [android, kotlin]
خروجی یا نتیجه اجرا
[android, kotlin]
نکته کاربردی: اینجا باید به رفتار کد نگاه کنی، نه فقط ظاهرش. مقدارها را عوض کن و دوباره اجرا بگیر تا دستت بفهمد برنامه چطور واکنش نشان می‌دهد. اگر خروجی با چیزی که انتظار داشتی فرق کرد، اول مقدار متغیرها و مسیر اجرا را چک کن؛ ۹۰٪ باگ‌های اول راه همین‌جا قایم شده‌اند.

Map برای کلید و مقدار

`Map` یعنی هر چیز با کلید خودش پیدا می‌شه. برای تنظیمات، پروفایل، دیکشنری و داده‌های ساختارمند خیلی کاربردیه.

مثال را با چند مقدار دیگر هم امتحان کن؛ چون برنامه‌نویسی با نگاه کردن یاد گرفته نمی‌شود، با خراب کردن و درست کردن جا می‌افتد.

Map
val user = mapOf(
    "name" to "نیما",
    "role" to "developer"
)

println(user["name"])
خروجی یا نتیجه اجرا
نیما
نکته کاربردی: این الگو در پروژه واقعی زیاد تکرار می‌شود. از همین حالا تمیز و خوانا بنویس تا بعداً موقع دیباگ، خودت به خودت فحش ندهی. اگر خروجی با چیزی که انتظار داشتی فرق کرد، اول مقدار متغیرها و مسیر اجرا را چک کن؛ ۹۰٪ باگ‌های اول راه همین‌جا قایم شده‌اند.

map، filter و forEach

این سه‌تا باعث می‌شن با مجموعه‌ها حرفه‌ای کار کنی. به‌جای حلقه‌های شلوغ، داده رو مثل خط تولید مرتب پردازش می‌کنی.

مثال را با چند مقدار دیگر هم امتحان کن؛ چون برنامه‌نویسی با نگاه کردن یاد گرفته نمی‌شود، با خراب کردن و درست کردن جا می‌افتد.

عملیات کاربردی
val numbers = listOf(1, 2, 3, 4, 5)

val evenSquares = numbers
    .filter { it % 2 == 0 }
    .map { it * it }

println(evenSquares)
خروجی یا نتیجه اجرا
[4, 16]
نکته کاربردی: نکته حرفه‌ای این است که Kotlin معمولاً راه کوتاه‌تر دارد، ولی کوتاه‌تر همیشه بهتر نیست. اول خوانایی، بعد زرنگ‌بازی. اگر خروجی با چیزی که انتظار داشتی فرق کرد، اول مقدار متغیرها و مسیر اجرا را چک کن؛ ۹۰٪ باگ‌های اول راه همین‌جا قایم شده‌اند.

نتیجه این درس 🎯

Collectionها قلب کار با داده‌اند. لیست، ست، مپ و عملیات filter/map باعث می‌شوند به جای حلقه‌های شلوغ، داده را مثل آدم مرتب پردازش کنی.

تمرین! 🧠

لیستی از قیمت‌ها بساز، فقط قیمت‌های بالای ۱۰۰ را نگه دار و ۱۰ درصد تخفیف روی آن‌ها اعمال کن.

جواب تمرین
fun main() {
    val prices = listOf(80, 120, 300, 50, 180)

    val discounted = prices
        .filter { it > 100 }
        .map { it * 0.9 }

    println(discounted)
}
خروجی جواب
[108.0, 270.0, 162.0]