Sobes.tech
Junior

Kotlin-də kolleksiyalarla necə işləmək olar?

sobes.tech Süni İntellekt

AI-dan cavab

Kotlin-də kolleksiyalar obyektlərin qruplarını təmsil edir. Onlar dəyişdirilə bilən (mutable) və ya dəyişdirilməz (immutable) ola bilər.

Dəyişdirilməz kolleksiyalar (Immutable):

  • Məzmunu yaradıldıqdan sonra dəyişdirilə bilməz.
  • Çox iş parçacığı mühitlərində oxuma üçün təhlükəsizdir.
  • Əsas tiplər: List, Set, Map.
val numbers: List<Int> = listOf(1, 2, 3) // Dəyişdirilməz siyahı yaratmaq
// numbers.add(4) // Tərtib xətası: dəyişdirilməz kolleksiya

Dəyişdirilə bilən kolleksiyalar (Mutable):

  • Məzmunu dəyişdirilə bilər (əlavə etmək, silmək, elementləri dəyişmək).
  • Standart olaraq çox iş parçacığı üçün təhlükəsiz deyil (əllə sinxronizasiya tələb edir).
  • Əsas tiplər: MutableList, MutableSet, MutableMap.
val mutableNumbers: MutableList<Int> = mutableListOf(1, 2, 3) // Dəyişdirilə bilən siyahı yaratmaq
mutableNumbers.add(4) // Element əlavə etmək
mutableNumbers.remove(2) // Element silmək

Əsas kolleksiya tipləri:

  • List: Təşkil olunmuş kolleksiya, təkrarlara icazə verir. İndeks ilə giriş.
    val names: List<String> = listOf("Alice", "Bob", "Alice")
    println(names[0]) // "Alice"
    
  • Set: Təşkil olunmamış kolleksiya, təkrarlara icazə vermir. Elementlər unikal.
    val uniqueNumbers: Set<Int> = setOf(1, 2, 2, 3)
    println(uniqueNumbers) // [1, 2, 3]
    
  • Map: Açar-dəyər cütləri kolleksiyası. Hər açar unikal.
    val ages: Map<String, Int> = mapOf("Alice" to 30, "Bob" to 25)
    println(ages["Alice"]) // 30
    

Kolleksiyalar ilə işləmək üçün genişləndirmə funksiyaları (yüksək səviyyəli funksiyalar):

Kotlin kolleksiyalar üçün çox güclü genişləndirmə funksiyaları təqdim edir:

  • filter: Yalnız şərti ödəyən elementləri ehtiva edən yeni kolleksiya yaradır.
    val evenNumbers = numbers.filter { it % 2 == 0 } // [2]
    
  • map: Hər elementi yeni elementə çevirir və yeni kolleksiya yaradır.
    val squaredNumbers = numbers.map { it * it } // [1, 4, 9]
    
  • forEach: Hər element üçün əməliyyat yerinə yetirir.
    numbers.forEach { println(it) } // 1, 2, 3 sətir-sətir çap edir
    
  • reduce: Bütün elementləri bir əməliyyat istifadə edərək bir dəyərə birləşdirir.
    val sum = numbers.reduce { acc, i -> acc + i } // 6
    
  • fold: reduce-ə bənzəyir, amma başlanğıc dəyəri qəbul edir.
    val sumWithInitial = numbers.fold(10) { acc, i -> acc + i } // 16 (10 + 1 + 2 + 3)
    
  • sortedBy: Hər elementdən çıxarılan dəyərə görə kolleksiyanı sıralayır.
    val sortedNames = listOf("Charlie", "Alice", "Bob").sortedBy { it } // [Alice, Bob, Charlie]
    
  • groupBy: Hər elementdən çıxarılan açığa görə elementləri qruplaşdırır.
    val groupedNumbers = numbers.groupBy { if (it % 2 == 0) "even" else "odd" } // {odd=[1, 3], even=[2]}
    

Kolleksiya tipləri arasında çevirmə:

Bir kolleksiya tipini digərinə çevirmək və ya dəyişdirilə bilən və dəyişdirilməz versiyalar arasında keçid etmək asandır:

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

Kotlin-də kolleksiyalarla işləmək standart kitabxana və genişləndirmə funksiyalarının zənginliyi sayəsində çox asanlaşır.