🔹 دوست داری تو یه خط، کل لیست رو تغییر بدی یا فیلتر کنی؟
«map» و «filter» دو تا از قدرتمندترین عملیاتهای مجموعه در «Kotlin» هستن که کدت رو خواناتر و سریعتر میکنن 😎
🔸 «map» هر المان رو به چیز دیگهای تبدیل میکنه. مثلاً لیست اعداد رو به مربعشون تبدیل کن.
🔸 «filter» فقط المانهایی رو نگه میداره که شرط مشخصی داشته باشن. مثلاً فقط اعداد زوج.
📌 کاربرد واقعی: فرض کن لیست قیمتهای محصولات داری. میخوای قیمتهای بالای ۱۰۰ رو با تخفیف ۲۰٪ نشون بدی.
🔹 اول کد رو ببین:
🔸 توضیح: اول با «filter» قیمتهای بزرگتر از ۱۰۰ رو جدا میکنیم، بعد با «map» هر کدوم رو در ۰.۸ ضرب میکنیم. نتیجه یه لیست جدید از تخفیفهاست.
💡 نکته: این دو عملیات قابل زنجیره شدن هستن و باعث میشن نیازی به حلقههای تودرتو نباشه. کد تمیزتر و کمخطاتر میشه.
✅ برداشت عملی: هر وقت خواستی روی یه لیست تغییرات دستهجمعی بدی یا فیلترش کنی، از «map» و «filter» استفاده کن. با تمرین، دیگه از «for» بینیاز میشی!
#Codeit #Android #Kotlin #Jetpack #FunctionalProgramming #CollectionOperations
🌐 Codeit → https://code-it.ir
━━━━━━━━━━━━━━━
@CodeitMobile
«map» و «filter» دو تا از قدرتمندترین عملیاتهای مجموعه در «Kotlin» هستن که کدت رو خواناتر و سریعتر میکنن 😎
🔸 «map» هر المان رو به چیز دیگهای تبدیل میکنه. مثلاً لیست اعداد رو به مربعشون تبدیل کن.
🔸 «filter» فقط المانهایی رو نگه میداره که شرط مشخصی داشته باشن. مثلاً فقط اعداد زوج.
📌 کاربرد واقعی: فرض کن لیست قیمتهای محصولات داری. میخوای قیمتهای بالای ۱۰۰ رو با تخفیف ۲۰٪ نشون بدی.
🔹 اول کد رو ببین:
val prices = listOf(50, 150, 200, 80, 300)
val discounted = prices
.filter { it > 100 }
.map { it * 0.8 }
println(discounted) // [120.0, 160.0, 240.0]
🔸 توضیح: اول با «filter» قیمتهای بزرگتر از ۱۰۰ رو جدا میکنیم، بعد با «map» هر کدوم رو در ۰.۸ ضرب میکنیم. نتیجه یه لیست جدید از تخفیفهاست.
💡 نکته: این دو عملیات قابل زنجیره شدن هستن و باعث میشن نیازی به حلقههای تودرتو نباشه. کد تمیزتر و کمخطاتر میشه.
✅ برداشت عملی: هر وقت خواستی روی یه لیست تغییرات دستهجمعی بدی یا فیلترش کنی، از «map» و «filter» استفاده کن. با تمرین، دیگه از «for» بینیاز میشی!
#Codeit #Android #Kotlin #Jetpack #FunctionalProgramming #CollectionOperations
🌐 Codeit → https://code-it.ir
━━━━━━━━━━━━━━━
@CodeitMobile
❤1🔥1
🔥 توی دنیای واقعی، همیشه دادهها رو بر اساس یه ویژگی مشترک دستهبندی میکنیم. مثلاً مشتریها بر اساس شهر، یا محصولات بر اساس دستهبندی. توی «Kotlin» یه تابع خفن به اسم «groupBy» هست که دقیقاً همین کار رو میکنه.
🌀 «groupBy» یه عملیات «Collection» هست که لیست رو بر اساس یه کلید مشخص به «Map» تبدیل میکنه. هر کلید به لیستی از آیتمهایی که اون کلید رو دارند اشاره میکنه.
✅ فرض کن لیستی از سفارشهای یک فروشگاه آنلاین داری. میخوای سفارشها رو بر اساس وضعیت (مثلاً «پرداخت شده» یا «در انتظار») دستهبندی کنی. اینجا «groupBy» عالیه.
📌 بیا یه مثال ساده ببینیم. اول یه «data class» برای سفارش تعریف میکنیم:
🧩 حالا یه لیست از سفارشها داریم و میخوایم با «groupBy» دستهبندیشون کنیم:
📊 حالا «groupedByStatus» یه «Map» هست که کلیدش وضعیت و مقدارش لیست سفارشهای هموضعیته. مثلاً:
💡 اگه نیاز به دستهبندی پیشرفتهتر داشته باشی، «groupBy» میتونه یه «lambda» برای تبدیل مقدار هم قبول کنه. مثلاً فقط اسم سفارشها رو ذخیره کنی:
🚀 این تابع توی هر جایی که نیاز به دستهبندی داری به کار میاد: از داشبورد مدیریت تا گزارشگیری و تحلیل داده. حتماً تو پروژههات استفاده کن.
#Codeit #Android #Kotlin #Jetpack #CollectionOperations #groupBy #KotlinTips
🌐 Codeit → https://code-it.ir
━━━━━━━━━━━━━━━
@CodeitMobile
🌀 «groupBy» یه عملیات «Collection» هست که لیست رو بر اساس یه کلید مشخص به «Map» تبدیل میکنه. هر کلید به لیستی از آیتمهایی که اون کلید رو دارند اشاره میکنه.
✅ فرض کن لیستی از سفارشهای یک فروشگاه آنلاین داری. میخوای سفارشها رو بر اساس وضعیت (مثلاً «پرداخت شده» یا «در انتظار») دستهبندی کنی. اینجا «groupBy» عالیه.
📌 بیا یه مثال ساده ببینیم. اول یه «data class» برای سفارش تعریف میکنیم:
data class Order(
val id: Int,
val status: String,
val amount: Double
)
🧩 حالا یه لیست از سفارشها داریم و میخوایم با «groupBy» دستهبندیشون کنیم:
val orders = listOf(
Order(1, "Paid", 150.0),
Order(2, "Pending", 200.0),
Order(3, "Paid", 300.0),
Order(4, "Canceled", 50.0),
Order(5, "Pending", 120.0)
)
val groupedByStatus = orders.groupBy { it.status }
📊 حالا «groupedByStatus» یه «Map» هست که کلیدش وضعیت و مقدارش لیست سفارشهای هموضعیته. مثلاً:
// خروجی:
// {Paid=[Order(1, Paid, 150.0), Order(3, Paid, 300.0)],
// Pending=[Order(2, Pending, 200.0), Order(5, Pending, 120.0)],
// Canceled=[Order(4, Canceled, 50.0)]}
💡 اگه نیاز به دستهبندی پیشرفتهتر داشته باشی، «groupBy» میتونه یه «lambda» برای تبدیل مقدار هم قبول کنه. مثلاً فقط اسم سفارشها رو ذخیره کنی:
val groupedIds = orders.groupBy(
keySelector = { it.status },
valueTransform = { it.id }
)
// خروجی: {Paid=[1, 3], Pending=[2, 5], Canceled=[4]}
🚀 این تابع توی هر جایی که نیاز به دستهبندی داری به کار میاد: از داشبورد مدیریت تا گزارشگیری و تحلیل داده. حتماً تو پروژههات استفاده کن.
#Codeit #Android #Kotlin #Jetpack #CollectionOperations #groupBy #KotlinTips
🌐 Codeit → https://code-it.ir
━━━━━━━━━━━━━━━
@CodeitMobile
❤1🔥1
🧩 لیستهات رو مرتب میکنی، اما میخوای بر اساس یه خاصیت مشخص مرتبسازی کنی؟ «sortedBy» تو «Kotlin» دقیقاً همین کار رو انجام میده. دیگه نیاز نیست خودت بنویسی که چطور مقایسه کنی.
«sortedBy» یه lambda میگیره که مشخص میکنه بر اساس کدوم خاصیت (مثلاً اسم، سن، تاریخ) لیست مرتب بشه. برعکس «sorted» که فقط روی خود آیتمها کار میکنه (مثلاً اعداد یا رشتهها).
💡 فرض کن یه لیست از کاربرا داری و میخوای بر اساس «age» (سن) صعودی مرتب بشن. با «sortedBy» خیلی راحت میشه.
کد عملی رو با یه مثال واقعی ببین:
تو این کد یه لیست از کاربرا با نام و سن داریم. با «sortedBy { it.age }» لیست رو بر اساس سن به ترتیب صعودی مرتب میکنیم. خروجی: «User(name=Reza, age=22), User(name=Ali, age=25), User(name=Sara, age=30)».
نکته مهم: «sortedBy» یه لیست جدید برمیگردونه و لیست اصلی رو تغییر نمیده (immutable). اگر نیاز به مرتبسازی نزولی داری، از «sortedByDescending» استفاده کن.
✅ با «sortedBy» میتونی هر نوع دادهای رو بر اساس یه خاصیت به راحتی مرتب کنی. این یه ابزار قدرتمنده برای پردازش لیستها تو «Kotlin».
#Codeit #Android #Kotlin #Jetpack #CollectionOperations #Sorting #KotlinTips
🌐 Codeit → https://code-it.ir
━━━━━━━━━━━━━━━
@CodeitMobile
«sortedBy» یه lambda میگیره که مشخص میکنه بر اساس کدوم خاصیت (مثلاً اسم، سن، تاریخ) لیست مرتب بشه. برعکس «sorted» که فقط روی خود آیتمها کار میکنه (مثلاً اعداد یا رشتهها).
💡 فرض کن یه لیست از کاربرا داری و میخوای بر اساس «age» (سن) صعودی مرتب بشن. با «sortedBy» خیلی راحت میشه.
کد عملی رو با یه مثال واقعی ببین:
data class User(val name: String, val age: Int)
fun main() {
val users = listOf(
User("Ali", 25),
User("Sara", 30),
User("Reza", 22)
)
val sortedUsers = users.sortedBy { it.age }
println(sortedUsers)
}
تو این کد یه لیست از کاربرا با نام و سن داریم. با «sortedBy { it.age }» لیست رو بر اساس سن به ترتیب صعودی مرتب میکنیم. خروجی: «User(name=Reza, age=22), User(name=Ali, age=25), User(name=Sara, age=30)».
نکته مهم: «sortedBy» یه لیست جدید برمیگردونه و لیست اصلی رو تغییر نمیده (immutable). اگر نیاز به مرتبسازی نزولی داری، از «sortedByDescending» استفاده کن.
✅ با «sortedBy» میتونی هر نوع دادهای رو بر اساس یه خاصیت به راحتی مرتب کنی. این یه ابزار قدرتمنده برای پردازش لیستها تو «Kotlin».
#Codeit #Android #Kotlin #Jetpack #CollectionOperations #Sorting #KotlinTips
🌐 Codeit → https://code-it.ir
━━━━━━━━━━━━━━━
@CodeitMobile
🔥2