Sobes.tech
Junior

Ինչպես աշխատել Kotlin-ում հավաքածուների հետ?

sobes.tech AI

Պատասխան AI-ից

Kotlin- ում հավաքածուները ներկայացնում են օբյեկտների խմբեր։ Դրանք կարող են լինել փոփոխական (mutable) կամ անփոփոխ (immutable)։

Անփոփոխ հավաքածուներ (Immutable):

  • Նրանց պարունակությունը չի կարող փոխվել ստեղծելուց հետո։
  • Անվտանգ են ընթերցման համար մի քանի թելերում։
  • Հիմնական տիպեր՝ List, Set, Map։
val numbers: List<Int> = listOf(1, 2, 3) // Անփոփոխ ցանկի ստեղծում
// numbers.add(4) // Կոմպիլյատորային սխալ՝ անփոփոխ հավաքածու

Փոփոխական հավաքածուներ (Mutable):

  • Նրանց պարունակությունը կարող է փոխվել (ավելացնել, հեռացնել, փոփոխել էլեմենտները):
  • Դրանք սովորաբար չեն ապահովում թելերի անվտանգություն (պահանջվում է ձեռքով սինխրոնիզացիա):
  • Հիմնական տիպեր՝ MutableList, MutableSet, MutableMap։
val mutableNumbers: MutableList<Int> = mutableListOf(1, 2, 3) // Փոփոխական ցանկի ստեղծում
mutableNumbers.add(4) // Էլեմենտի ավելացում
mutableNumbers.remove(2) // Էլեմենտի հեռացում

Հիմնական հավաքածուի տիպեր:

  • List: Կարգավորված հավաքածու, որը թույլ է տալիս կրկնվող էլեմենտներ։ Հասանելի է ինդեքսով։
    val names: List<String> = listOf("Alice", "Bob", "Alice")
    println(names[0]) // "Alice"
    
  • Set: Անկարգավորված հավաքածու, որը չի թույլատրում կրկնվող էլեմենտներ։ Էլեմենտները եզակի են։
    val uniqueNumbers: Set<Int> = setOf(1, 2, 2, 3)
    println(uniqueNumbers) // [1, 2, 3]
    
  • Map: Զույգերի հավաքածու՝ բանալի-արժեք։ Յուրաքանչյուր բանալի եզակի է։
    val ages: Map<String, Int> = mapOf("Alice" to 30, "Bob" to 25)
    println(ages["Alice"]) // 30
    

Հավաքածուների հետ աշխատելու ընդլայնումներ (գերակատար ֆունկցիաներ):

Kotlin- ը առաջարկում է բազմաթիվ հզոր ընդլայնման ֆունկցիաներ հավաքածուների մշակման համար՝

  • filter: Ստեղծում է նոր հավաքածու, որը պարունակում է միայն այն էլեմենտները, որոնք համապատասխանում են կանխատեսմանը։
    val evenNumbers = numbers.filter { it % 2 == 0 } // [2]
    
  • map: Փոխում է յուրաքանչյուր էլեմենտ հավաքածուում՝ ստեղծելով նոր հավաքածու։
    val squaredNumbers = numbers.map { it * it } // [1, 4, 9]
    
  • forEach: Կատարում է գործողություն յուրաքանչյուր էլեմենտի համար։
    numbers.forEach { println(it) } // Տպում է 1, 2, 3 տող առ տող
    
  • reduce: Միավորում է բոլոր էլեմենտները մեկ արժեքի՝ կիրառելով գործողություն։
    val sum = numbers.reduce { acc, i -> acc + i } // 6
    
  • fold: Դեռևս նման է reduce-ին, բայց ընդունում է սկզբնական արժեք։
    val sumWithInitial = numbers.fold(10) { acc, i -> acc + i } // 16 (10 + 1 + 2 + 3)
    
  • sortedBy: Սորտավորում է հավաքածուն ըստ արժեքի, որը ստացվում է յուրաքանչյուր էլեմենտից։
    val sortedNames = listOf("Charlie", "Alice", "Bob").sortedBy { it } // [Alice, Bob, Charlie]
    
  • groupBy: Կարգավորում է էլեմենտները ըստ բանալիի, որը ստացվում է յուրաքանչյուր էլեմենտից։
    val groupedNumbers = numbers.groupBy { if (it % 2 == 0) "even" else "odd" } // {odd=[1, 3], even=[2]}
    

Մեկնափոխություն հավաքածուների տեսակների միջև:

Հեշտությամբ կարող եք փոխարկել մեկ տեսակի հավաքածու մյուսին, ինչպես նաև փոփոխական և անփոփոխ տարբերակների միջև՝

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

Աշխատանքը հավաքածուների հետ Kotlin- ում զգալիորեն հեշտանում է՝ շնորհիվ ստանդարտ գրադարանի և ընդլայնման ֆունկցիաների։