Dart Ro’yxatlar (Lists)

Ro’yxat – o’zida bir nechta o’zgaruvchilarni saqlovchi obyekt. Dart dasturlash tilida ro’yxatlar quyidagi tartibda yaratiladi:

  • List<ro’yxat_turi> ro’yxat_nomi = [];
  • var ro’yxat_nomi = <ro’yxat_turi>[];
  • var ro’yxat_nomi = [];

Ro’yxat turi bu ro’yxatga qaysi turdagi elementlarni qo’shish mumkin ekanligini anglatadi va boshqa turdagi elementlar qabul qilinmaydi.

Masalan, mevalar nomli ro’yxatni yarataylik:

List<String> mevalar = ["olma", "anor", "behi", "uzum"];

Meva nomlari satr bo’lganligi uchun ro’yxat turini String orqali berdik. Ro’yxat elementlari doimo kvadrat qavslar ichida yoziladi va bir nechta bo’lsa, ular bir-biridan vergul orqali ajratib yoziladi.

Ro’yxat har bir elementiga murojaat etish uchun ularning indeksidan qo’llaniladi:

Indekslash doimo 0 dan boshlanadi va ro’yxat eng so’nggi elementi indeksi ro’yxat uzunligidan 1 ta kam bo’ladi. Ro’yxatni print funksiyasi orqali chop etib ko’rishimiz mumkin,

void main() {
List<String> mevalar = ["olma", "anor", "behi", "uzum"];
print(mevalar);
}
>> [olma, anor, behi, uzum]

Ro’yxat elementlari indeksi orqali murojaat etib, qiymatlarini yangilash yoki qiymatini olishimiz mumkin. Buning uchun ro’yxat_nomi[indeks] tarzida ifodalash kerak bo’ladi.

void main() {
List<String> mevalar = ["olma", "anor", "behi", "uzum"];
// Ro'yxat elementini olish
print(mevalar[1]);
// Ro'yxat elementi qiymatini yangilash
mevalar[1] = "shaftoli";
print(mevalar[1]);
}
>> anor >> shaftoli

Yoki ro’yxat elementi qiymatini biror o’zgaruvchiga o’zlashtirib olishimiz ham mumkin.

Ro’yxat elementlarini birma-bir ko’rib chiqishimiz mumkin. Buning uchun asosan for siklidan foydalaniladi.

void main() {
List<String> mevalar = ["olma", "anor", "behi", "uzum"];
for (int i = 0; i < mevalar.length; i++) {
print(mevalar[i]);
}
}
>> olma >> anor >> behi >> uzum

For siklida bilganimizdek, kerakli parametrlar belgilanadi. Shartli ifoda joyiga i ning qiymati mevalar nomli ro’yxat uzunligidan katta bo’lmagunga qadar bajarilsin degan shart qo’yilgan. Chiqarish funksiyasi birma-bir sikl ishlagan vaqtda indeks bo’yicha ro’yxat elementini olib ekranga qiymatini chiqaradi. Albatta bunda ro’yxat elementlariga indeks orqali murojaat qilinadi. For siklining boshqa shakli ham mavjud bo’lib, unda indekslar ishlatilmaydi. Bu for in dir.

void main() {
List<String> mevalar = ["olma", "anor", "behi", "uzum"];
for (String meva in mevalar) {
print(meva);
}
}
>> olma >> anor >> behi >> uzum

For siklining bu shaklida ro’yxat barcha elementlari qiymati meva nomli o’zgaruvchiga o’zlashtiriladi va ekranga chop etiladi. Hamda oraliqlar bo’yicha murojaat eta olmaymiz bu usul bilan.

Quyida ro’yxatlar bilan ishlash uchun bir qancha xususiyat va funksiyalari bo’yicha ma’lumot berib o’tilgan.

Ro’yxat xususiyatlari

  • length -Ro’yxat uzunligini aniqlash
  • reversed - Ro’yxatni teskari tartibga o’tkazish
  • first - Ro’yxat birinchi elementiga murojaat etish
  • last - Ro’yxat so’nggi elementiga murojaat etish
  • indexed - Ro’yxat elementlari qiymatini indeksi bilan birgalikda ko’rish
  • isEmpty - Ro’yxat bo’shligini tekshirish
  • isNotEmpty - Ro’yxat bo’sh emasligini tekshirish

Ro’yxat funksiyalari

  • add - Ro’yxatga bitta yangi element qo’shish oxiriga
  • addAll - Ro’yxatga boshqa bir ro’yxatni qo’shish, turlari bir xil bo’lishi kerak
  • clear - Ro’yxatni tozalash. Barcha elementlarini o’chirib yuborish
  • elementAt - Ro’yxatdan element indeksi bo’yicha unga murojaat etish
  • insert - Ro’yxatga indeks bo’yicha yangi element qo’shish
  • remove -Ro’yxatdan qiymati bo’yicha elementni o’chirish
  • removeAt - Ro’yxatdan indeksi bo’yicha elementni o’chirish
  • removeLast - Ro’yxatdan eng so’nggi elementni o’chirish
  • sort - Ro’yxat elementlarini tartiblash
  • join - Ro’yxat elementlarini birlashtirish
// Ro'yxatga yangi element qo'shish
void main() {
List<String> mevalar = ["olma", "anor", "behi", "uzum"];
mevalar.add("o'rik");
print(mevalar);
}
>> [olma, anor, behi, uzum] >> [olma, anor, behi, uzum, o'rik]
// Ro'yxatga yangi ro'yxat qo'shish
void main() {
List<String> mevalar = ["olma", "anor", "behi", "uzum"];
List<String> sabzavotlar = ["sabzi", "piyoz", "kartoshka"];
mevalar.addAll(sabzavotlar);
print(mevalar);
}
>> [olma, anor, behi, uzum, sabzi, piyoz, kartoshka]

Ro’yxat elementiga indeksi orqali funksiya bilan ham murojaat etish mumkin.

void main() {
List<String> sabzavotlar = ["sabzi", "piyoz", "kartoshka"];
print(sabzavotlar.elementAt(2));
}
>> kartoshka

Ro’yxat barcha elementlarini bitta satrga qo’shib jamlash. Bunda join funksiyasiga birlashtirayotgan vaqtda qaysi satrni qo’yib ketishi ko’rsatilishi kerak.

void main() {
List<String> sabzavotlar = ["sabzi", "piyoz", "kartoshka"];
String sabzavot = sabzavotlar.join(", ");
print(sabzavot);
}
>> sabzi, piyoz, kartoshka

Ro’yxat elementlarini turli tarzda tartiblashimiz ham mumkin. Masalan, uzunligi bo’yicha sort funksiyasiga kerakli shartni ko’rsatish asnosida:

void main() {
List<String> saytlar = ["uzbekdevs.uz", "leetcode.com", "acmp.ru", "cplusplus.org"];
saytlar.sort((a, b) => a.length.compareTo(b.length));
print(saytlar);
}
>> [acmp.ru, uzbekdevs.uz, leetcode.com, cplusplus.org]

Ro’yxatga yangi elementni indeks bo’yicha qo’shish imkoni mavjud. Bunda albatta indeks [0; ro’yxat_nomi.length] orasida bo’lishi kerak, aks holda yuzaga keladi.

void main() {
List<String> saytlar = ["uzbekdevs.uz", "leetcode.com", "acmp.ru", "cplusplus.org"];
saytlar.insert(0, "oju.uz");
print(saytlar);
}
>> [oju.uz, uzbekdevs.uz, leetcode.com, acmp.ru, cplusplus.org]

Ro’yxat ustida bajariluvchi juda ko’plab ishlar mavjud ularning barchasini ko’rib chiqa olmaymiz. Eng muhimlarini tushuntirishga intilamiz.