AXV

Kolleksiyalar: List, Set, Map

List va MutableList, indeks va xavfsiz olish, Set (takrorlanmas), Map (kalit–qiymat)

9-sinfAndroid dasturlash6-hafta · 16-dars

Bugun nimalarni o'rganamiz?

List va MutableList

Tartiblangan ro'yxat

Set

Takrorlanmas to'plam

Map

Kalit va qiymat

Takrorlash

Kotlinda sinfdan obyekt qanday yaratiladi?

Kotlinda new kalit so'zi yo'q.
01

List va MutableList

Tartiblangan ro'yxat

Ro'yxat turlari

listOf:o'zgarmas mutableListOf:o'zgaruvchan Indeks: 0 dan getOrNull:xavfsiz Avval o'zgarmas, kerak bo'lsa o'zgaruvchan

List va MutableList


val people = listOf("Tom", "Sam", "Kate")
println(people[0])               // Tom
println(people.getOrNull(10))    // null

val tasks = mutableListOf("Kod yozish", "Test")
tasks.add("Deploy")
tasks.removeAt(1)
println(tasks)                   // [Kod yozish, Deploy]
  
people[10] dasturni to'xtatadi (IndexOutOfBounds), getOrNull(10) esa null qaytaradi. Foydalanuvchi kiritgan indeks bilan doim xavfsiz usulni ishlating.

Mini-test

listOf(1, 2, 3) ga add(4) yozilsa nima bo'ladi?

listOf — o'zgarmas; add uchun mutableListOf kerak.
02

Set

Takrorlanmas to'plam

Set xususiyati

Takror yo'q Indeks yo'q contains / in add: true/ false Noyob qiymatlar uchun

Set bilan ishlash


val tags = mutableSetOf("kotlin", "android")
println(tags.add("kotlin"))      // false: allaqachon bor
println(tags.add("compose"))     // true
println(tags.size)               // 3
println("android" in tags)       // true

val unique = listOf(1, 2, 2, 3, 3).toSet()
println(unique)                  // [1, 2, 3]
  
Set'da elementga set[0] deb bo'lmaydi. Tartib kerak bo'lsa, toList() bilan ro'yxatga aylantiring.

Mini-test

mutableSetOf("a", "b") ga add("a") yozilsa nima qaytadi?

Set takrorni qo'shmaydi va false qaytaradi.
03

Map

Kalit va qiymat

Map tuzilishi

Kalit (noyob) → Qiymat map[kalit] for ((k,v) in map) Kalit orqali tez topish

Narxlar lug'ati


val prices = mutableMapOf("Laptop" to 1200.0, "Phone" to 800.0)
prices["Phone"] = 750.0
println(prices["Tablet"])                    // null
println(prices.getOrDefault("Tablet", 0.0))  // 0.0
println(prices.containsKey("Laptop"))        // true
for ((name, price) in prices) println("$name: $price")
  
Kalit yo'q bo'lsa map[kalit] null qaytaradi. Natijani ishlatishdan oldin ?: (Elvis) yoki getOrDefault bilan standart qiymat bering.

Mini-test

mapOf da bir xil kalit ikki marta yozilsa nima bo'ladi?

Kalit noyob: qiymat almashadi.

List va Set

List

Tartibli, indeksli, takror mumkin
VS

Set

Takrorlanmas, indekssiz, contains tez

Takror kerak bo'lmasa — Set.

Atamalar. Bosing

Kolleksiya

bosing

Ko'p qiymatni saqlovchi tuzilma

Indeks

bosing

Elementning tartib raqami (0 dan)

Immutable

bosing

O'zgartirib bo'lmaydigan

Key–Value

bosing

Kalit va unga mos qiymat

Kolleksiya tanlash

1. List

Tartib va takror.

2. Set

Faqat noyob.

3. Map

Kalit bo'yicha topish.

Kolleksiyalar taqqoslash

TurTartib/indeksTakrorMisol
ListHa, indeks borMumkinO'quvchilar ro'yxati
SetIndeks yo'qMumkin emasTeglar to'plami
MapKalit bo'yichaKalit noyobMahsulot → narx

Pastga bosing: tur tanlash

Omborxona ro'yxati

  1. mutableListOf bilan 3 ta mahsulot yarating, 1 tasini qo'shing va 1 tasini o'chiring.
  2. mutableMapOf bilan mahsulot → narx lug'atini yarating va bir narxni yangilang.
  3. for ((nom, narx) in map) bilan hisobot chiqaring.

O'zgarmas ro'yxat


val a = listOf(1, 2)
a.add(3)
  

O'zgarmas ro'yxat


val a = mutableListOf(1, 2)
a.add(3)
  

Kolleksiyalar raqamlarda

0
asosiy tur: List, Set, Map
0
— birinchi elementning indeksi
0
xil ro'yxat: o'zgarmas va o'zgaruvchan

To'g'ri kolleksiya — qisqa va xavfsiz kod.

Amaliy topshiriq 20 daqiqa

OsonRo'yxat yarating: 3 ta ismdan o'zgarmas ro'yxat yarating va birinchisini chiqaring.
OsonMahsulot qo'shing: mutableListOf ga yangi mahsulot qo'shing va ro'yxatni chiqaring.
O'rtaXavfsiz olish: Ro'yxatning 10-elementini xatosiz oling; yo'q bo'lsa «Yo'q» chiqsin.
O'rtaTakrorlarni olib tashlash: listOf(1, 2, 2, 3, 3) dan takrorsiz to'plam oling.
QiyinNarxlar lug'ati: Mahsulot → narx Map yarating, bir narxni yangilang va hisobot chiqaring.
BonusQidiruv funksiyasi: Narxni nom bo'yicha topadigan funksiya yozing: topilmasa «Topilmadi» qaytarsin.

Dars xulosasi

List

Tartib, indeks, getOrNull.

Set

Takrorlanmas to'plam.

Map

Kalit–qiymat, getOrDefault.

Uyga vazifa: Kolleksiyalar bilan «Omborxona» dasturi.

Keyingi dars: Lambda va filter/map

Kolleksiyalarni filtrlash

6-hafta · 17-dars