Sobes.tech
Junior

Kotlin'da kolleksiyalar bilan qanday ishlash mumkin?

sobes.tech AI

AIdan javob

Kotlin'da kolleksiyalar obyektlar guruhlarini ifodalaydi. Ular o'zgartiriladigan (mutable) yoki o'zgartirilmaydigan (immutable) bo'lishi mumkin.

O'zgartirilmaydigan kolleksiyalar (Immutable):

  • Ularning mazmuni yaratildiqdan so'ng o'zgartirilmaydi.
  • Ular ko'p oqimli muhitlarda o'qish uchun xavfsiz.
  • Asosiy turlar: List, Set, Map.
val numbers: List<Int> = listOf(1, 2, 3) // O'zgartirilmaydigan ro'yxat yaratish
// numbers.add(4) // Kompilyatsiya xatosi: o'zgartirilmaydigan kolleksiya

O'zgartiriladigan kolleksiyalar (Mutable):

  • Ularning mazmuni o'zgartirilishi mumkin (qo'shish, olib tashlash, o'zgartirish).
  • Standart holatda ko'p oqimli muhitlar uchun xavfsiz emas (qo'lda sinxronizatsiya qilish talab etiladi).
  • Asosiy turlar: MutableList, MutableSet, MutableMap.
val mutableNumbers: MutableList<Int> = mutableListOf(1, 2, 3) // O'zgartiriladigan ro'yxat yaratish
mutableNumbers.add(4) // Element qo'shish
mutableNumbers.remove(2) // Elementni olib tashlash

Asosiy kolleksiya turlari:

  • List: Tartiblangan kolleksiya, takrorlanmalar mumkin. Indeks bo'yicha kirish.
    val names: List<String> = listOf("Alice", "Bob", "Alice")
    println(names[0]) // "Alice"
    
  • Set: Tartibsiz kolleksiya, takrorlanmalar mumkin emas. Elementlar unikal.
    val uniqueNumbers: Set<Int> = setOf(1, 2, 2, 3)
    println(uniqueNumbers) // [1, 2, 3]
    
  • Map: Kalit-qiymat juftliklari kolleksiyasi. Har bir kalit unikal.
    val ages: Map<String, Int> = mapOf("Alice" to 30, "Bob" to 25)
    println(ages["Alice"]) // 30
    

Kolleksiyalar bilan ishlash uchun kengaytirish funksiyalari (yuqori tartibdagi funksiyalar):

Kotlin kolleksiyalarni ishlash uchun ko'plab kuchli kengaytirish funksiyalarini taqdim etadi:

  • filter: Faqat shartni qanoatlantiradigan elementlarni o'z ichiga olgan yangi kolleksiya yaratadi.
    val evenNumbers = numbers.filter { it % 2 == 0 } // [2]
    
  • map: Har bir elementni yangi elementga o'zgartiradi va yangi kolleksiya yaratadi.
    val squaredNumbers = numbers.map { it * it } // [1, 4, 9]
    
  • forEach: Har bir element uchun amal bajaradi.
    numbers.forEach { println(it) } // 1, 2, 3 satr satr chiqaradi
    
  • reduce: Barcha elementlarni bir qiymatga birlashtiradi, operatsiya yordamida.
    val sum = numbers.reduce { acc, i -> acc + i } // 6
    
  • fold: reduce ga o'xshash, lekin boshlang'ich qiymat qabul qiladi.
    val sumWithInitial = numbers.fold(10) { acc, i -> acc + i } // 16 (10 + 1 + 2 + 3)
    
  • sortedBy: Har bir elementdan olingan qiymat bo'yicha kolleksiyani tartiblaydi.
    val sortedNames = listOf("Charlie", "Alice", "Bob").sortedBy { it } // [Alice, Bob, Charlie]
    
  • groupBy: Har bir elementdan olingan kalit bo'yicha elementlarni guruhlaydi.
    val groupedNumbers = numbers.groupBy { if (it % 2 == 0) "even" else "odd" } // {odd=[1, 3], even=[2]}
    

Kolleksiya turlarini o'zgartirish:

Bir kolleksiya turini boshqasiga oson o'tkazish mumkin, shuningdek, o'zgartiriladigan va o'zgartirilmaydigan versiyalar o'rtasida o'tish:

val mutableList: MutableList<Int> = listOf(1, 2, 3).toMutableList()
val immutableList: List<Int> = mutableListOf(4, 5, 6).toList()

Kotlinda kolleksiyalar bilan ishlash, standart kutubxona va kengaytirish funksiyalarining boyligi tufayli juda osonlashadi.