Dart tiliga kirish O'zgaruvchilar va konstantalar Primitiv ma'lumotlar turlari


Download 374.15 Kb.
bet28/35
Sana11.05.2023
Hajmi374.15 Kb.
#1454719
1   ...   24   25   26   27   28   29   30   31   ...   35
Bog'liq
3-mustaqil ish

5-bob. To'plamlar

List



ro'yxati yoki ro'yxat qiymatlar to'plamini ifodalaydi. Boshqa dasturlash tillarida u massivlarga mos keladi. Keling, raqamlar ro'yxatini aniqlaymiz:


1

var list = [1, 2, 3];

Shuningdek, biz turni aniq belgilashimiz mumkin:




1

List list = [1, 2, 3];

Massiv aniqlanganda, unga kvadrat qavs ichidagi elementlar ro'yxati beriladi.


Indekslar massiv elementlariga murojaat qilish uchun ishlatiladi. Indeks massivdagi elementning sonini ifodalaydi va raqamlash noldan boshlanadi, shuning uchun birinchi elementning indeksi 0 bo'ladi. Va massivdagi to'rtinchi elementga murojaat qilish uchun biz, masalan, indeks 3 dan foydalanishimiz kerak. : roʻyxat [3]. Massiv elementlarining qiymatlarini olish va o'rnatish uchun indekslardan foydalanamiz:





1
2
3
4
5
6
7

void main (){
var list = [2, 4, 6];
list[1] = 5; // установка 2-го элемента
int d = list[2]; // получем 3-й элемент
print(d); // 6
}

Agar biz mavjud bo'lmagan indeksga kirishga harakat qilsak, xatoga duch kelamiz:





1
2

var list = [2, 4, 6];
list[6] = 5;

Bunday holda, ro'yxatda faqat 3 ta element mavjud, shuning uchun indeks 6 bo'lgan element ro'yxatda mavjud emas.


Ro'yxatni takrorlash uchun biz o'rnatilgan for / while tsikllaridan foydalanishimiz mumkin:





1
2
3
4
5
6
7

void main (){
var list = [2, 4, 6];
for(int i=0; i < list.length; i++){
print(list[i]);
}
}

Bunday holda, hisoblagich o'zgaruvchisi i indeks vazifasini bajaradi. Indeks list.length qiymatiga, ya'ni ro'yxat uzunligiga yetguncha o'sadi.


Ammo biz kollektsiyalar uchun maxsus tsikldan ham foydalanishimiz mumkin:





1
2
3
4
5
6
7

void main (){
var list = [2, 4, 6];
for (var n in list){
print(n);
}
}

Ro'yxat ro'yxatini takrorlashda takrorlanadigan har bir element n o'zgaruvchisiga joylashtiriladi, shundan so'ng biz uning qiymatini konsolga chop etishimiz mumkin.


Ruxsat etilgan va qat'iy bo'lmagan ro'yxatlar


Ro'yxatlar sobit (qattiq kodlangan) va qat'iy bo'lmagan (hajmi kattalashishi mumkin) bo'lishi mumkin. Suzuvchi ro'yxatlarni yaratishga misollar:


1
2

var list1 = [];
var list2 = [2, 4, 6];

Suzuvchi ro'yxatlarning o'ziga xos xususiyati shundaki, biz ularning hajmini dinamik ravishda o'zgartirishimiz mumkin, masalan, add () usulidan foydalanib, yangi elementlarni qo'shishimiz mumkin:




1
2
3
4
5
6
7
8
9
10

void main (){
var list1 = [3];
list1.add(1);
list1.add(4);
list1.add(5);
for (var n in list1){
print(n);
}
}

Konsol chiqishi:

3
1
4
5

Ruxsat etilgan ro'yxatni yaratish uchun List sinfining nomlangan konstruktorlaridan birini ishlatishingiz mumkin. Masalan, List.filled konstruktori (item_count, default_value) ikkita parametr oladi. Birinchi parametr - belgilangan ro'yxatdagi elementlar soni. Ikkinchi parametr ro'yxatni yaratishda barcha elementlarga ega bo'ladigan qiymatni ko'rsatadi:




1
2
3
4
5
6
7
8
9
10
11
12
13

void main (){
var list1 = List.filled(4, 2); // фиксированный список [2, 2, 2, 2]
list1[0] = 3;
list1[1] = 7;
list1[2] = 11;
list1[3] = 15;
//list1.add(1); // нельзя добавить новый элемент
for (var n in list1){
print(n);
}
}

Ro'yxat aniq bo'lsa-da, biz individual elementlarning qiymatlarini o'zgartirishimiz mumkin.


Ruxsat etilgan ro'yxatni yaratishning yana bir usuli List.generate () konstruktoridir:




1

List.generate(количество_элементов, функция_наполнения, можно_ли_добавлять)

Birinchi parametr elementlar sonini ko'rsatadi. Ikkinchi parametr ro'yxatni to'ldirish funktsiyasini ifodalaydi, bu element indeksi parametr sifatida uzatiladi. Uchinchi parametr mantiqiy qiymatdir - agar rost bo'lsa, u holda ro'yxat MUMKIN (kengaytirilmaydi), agar noto'g'ri bo'lsa, ro'yxat tuzatiladi.

List.generate konstruktoridan foydalanish:




1
2
3
4
5
6
7
8
9
10
11
12
13
14

void main (){
var list1 = List.generate(4, (int index) => index + 1, growable: false); // фиксированный список [1, 2, 3, 4]
list1[0] = 3;
list1[1] = 7;
list1[2] = 11;
list1[3] = 15;
//list1.add(1); // нельзя добавить новый элемент
for (var n in list1){
print(n);
}
}

Xususiyatlari va usullarini sanab o'ting


Ro'yxatning asosiy xususiyatlari:

birinchi: birinchi elementni qaytaradi


oxirgi: oxirgi elementni qaytaradi


uzunlik: ro'yxat uzunligini qaytaradi


teskari: barcha elementlar qarama-qarshi tartibda joylashgan ro'yxatni qaytaradi


isEmpty: ro'yxat bo'sh bo'lsa, true qiymatini qaytaradi


Ro'yxatning asosiy usullari:

qo'shish (E qiymati): ro'yxat oxiriga element qo'shadi

addAll (Iterable iterable): roʻyxat oxiriga boshqa roʻyxat qoʻshadi


clear (): roʻyxatdagi barcha elementlarni olib tashlaydi


indexOf (E element): elementning birinchi indeksini qaytaradi


insert (int index, E element): elementni ma'lum bir joyga kiritadi


olib tashlash (Ob'ekt qiymati): ob'ektni ro'yxatdan o'chiradi (faqat ro'yxatdagi elementning birinchi paydo bo'lishi o'chiriladi)


removeAt (int index): indeksdagi elementlarni olib tashlaydi


removeLast (): ro'yxatning oxirgi elementini o'chiradi


forEach (void f (E element)): ro'yxat elementlari bo'yicha ba'zi amallarni bajaradi, bu parametr funksiyasi, for..in siklining analoglari tomonidan o'rnatiladi.


sort (): roʻyxatni tartiblaydi

pastki ro'yxat (int start, [int end]): ro'yxatning indeks boshidan indeks oxirigacha bo'lgan qismini qaytaradi

o'z ichiga oladi (Ob'ekt elementi): agar element ro'yxatda bo'lsa, rostni qaytaradi


qo'shilish ([String separator = ""]): Ro'yxatning barcha elementlarini satrga birlashtiradi. Siz satrdagi elementlarni ajratadigan ixtiyoriy ajratuvchi parametrni belgilashingiz mumkin


o'tkazib yuborish (int count): Birinchi hisoblash elementlari mavjud bo'lmagan to'plamni qaytaradi


take (int count): Birinchi hisoblash elementlarini o'z ichiga olgan to'plamni qaytaradi


bu erda (bool testi (E element)): elementlari ba'zi shartlarga javob beradigan to'plamni qaytaradi, bu funksiya sifatida qabul qilinadi

Bu List sinfining asosiy funksiyalarining qisqacha ro'yxati. Hujjatlarda maydonlar / usullar / konstruktorlarning to'liq ro'yxati mavjud

Ba'zi sohalar va usullarni qo'llash




1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30

void main (){
var list = [-3, -1, 2, 4, 5, 7];
// получим первый элемент
print(list.first); // -3
// получим последний элемент
print(list.last); // 7
// получим длину списка
print(list.length); // 6
// добавим список
list.addAll([4, 6]);
// соединим элементы списка в строку, разделитель запятая
print(list.join(", ")); // -3, -1, 2, 4, 5, 7, 4, 6
// отсортируем список
list.sort();
print(list.join(", ")); // -3, -1, 2, 4, 4, 5, 6, 7
// удалим число 4
list.remove(4);
// удалим второй элемент
list.removeAt(1);
print(list.join(", ")); // -3, 2, 4, 5, 6, 7
// получим элементы больше 2
list = list.where((element) => element > 2).toList();
print(list.join(", ")); // 4, 5, 6, 7
}


Set


Set klassi noyob ob'ektlarning tartibsiz to'plamini ifodalaydi. Jingalak qavslar {} toʻplam yaratish uchun ishlatiladi:


1
2
3
4
5

var set = {1, 2, 3, 5};
// эквивалентные определения Set
Set set1 = {1, 2, 3, 5};
var set2 = {1, 2, 3, 5};
Set set3 = {1, 2, 3, 5};

To'plamni takrorlash uchun siz for..in tsiklidan foydalanishingiz mumkin:




1
2
3
4
5
6
7
8
9
10
11
12
13

void main (){
var intSet = {1, 2, 3, 5};
for (var n in intSet){
print(n);
}
var stringSet = {"Tom", "Alice", "Kate"};
for (var s in stringSet){
print(s);
}
}

To'plamlarning o'ziga xos xususiyati shundaki, ular faqat noyob qiymatlarni o'z ichiga oladi, ya'ni biz bir xil qiymatlarni to'plamga bir necha marta qo'sha olmaymiz:




1
2
3
4
5
6
7
8
9
10

void main (){
var set = {1, 2, 3, 5};
set.add(3); // добавляем один элемент - 3
set.addAll({4, 5}); // добавляем другой набор - {4, 5}
for (var n in set){
print(n); // 1 2 3 5 4
}
}

Set sinfining xossalari va usullari


To'plamlarning asosiy xususiyatlari:

birinchi: birinchi elementni qaytaradi


oxirgi: oxirgi elementni qaytaradi


uzunlik: to'plam uzunligini qaytaradi


isEmpty: agar to'plam bo'sh bo'lsa, true qiymatini qaytaradi

To'plamning asosiy usullari:

qo'shish (E qiymati): to'plamga element qo'shadi


addAll (Iterable iterable): to'plamga boshqa to'plam qo'shadi


clear (): to'plamdan barcha elementlarni olib tashlaydi


farq (Set other): joriy to‘plam va boshqa to‘plam o‘rtasidagi farqni boshqa to‘plam sifatida qaytaradi


kesishuv (Set other): joriy to‘plam va boshqa to‘plamning kesishishini boshqa to‘plam sifatida qaytaradi


olib tashlash (Ob'ekt qiymati): ob'ektni to'plamdan olib tashlaydi


removeAll (Iterable elementlari): to'plamdan elementlar to'plamining barcha elementlarini olib tashlaydi


birlashma (to'plam

o'z ichiga oladi (Ob'ekt elementi): agar element to'plamda bo'lsa, rostni qaytaradi

birlashma ([String separator = ""]): to'plamdagi barcha elementlarni satrga birlashtiradi. Siz satrdagi elementlarni ajratadigan ixtiyoriy ajratuvchi parametrni belgilashingiz mumkin

o'tkazib yuborish (int count): Birinchi hisoblash elementlari mavjud bo'lmagan to'plamni qaytaradi


take (int count): Birinchi hisoblash elementlarini o'z ichiga olgan to'plamni qaytaradi


bu erda (bool testi (E element)): elementlari ba'zi shartlarga javob beradigan to'plamni qaytaradi, bu funksiya sifatida qabul qilinadi

Set sinfining maydonlari / usullari / konstruktorlarining to'liq ro'yxatini hujjatlarda topish mumkin

Ba'zi sohalar va usullarni qo'llash




1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25

void main (){
var set = {-3, -1, 2, 4, 5, 7};
// получим первый элемент
print(set.first); // -3
// получим последний элемент
print(set.last); // 7
// получим длина набора
print(set.length); // 6
// добавим набор
set.addAll({4, 2, 6});
// соединим элементы списка в строку, разделитель запятая
print(set.join(", ")); // -3, -1, 2, 4, 5, 7, 6
// удалим число 4
set.remove(4);
print(set.join(", ")); // -3, -1, 2, 5, 7, 6


Map


Map klassi elementlar to'plamini ifodalaydi, bu erda har bir element kalit va qiymatga ega. Element kaliti va qiymati har xil turlarni ifodalashi mumkin.

Map obyektini yaratish uchun siz kalit-qiymat juftlarini joylashtirgan jingalak qavslardan {} yoki Map sinfining konstruktoridan foydalanishingiz mumkin. Xaritani yaratish imkoniyatlari:




1
2
3
4
5
6
7
8
9
10
11

var map = {
1: "Tom",
2: "Bob",
3: "Sam"
};
// эквивалентное определение Map
Map map2 = {
1: "Tom",
2: "Bob",
3: "Sam"
};

Bunday holda, Map ob'ektlarining ikkalasi Map - kalit tipi sifatida int va qiymat turi sifatida String turiga ega.


Jingalak qavslar kalitda uchta elementni belgilaydi: qiymat formati. Ya'ni, bu holda uchta kalit mavjud - 1, 2, 3, ular bilan uchta qiymat mos keladi - "Tom", "Bob", "Sam" satrlari.


Kalitlardan foydalanib, biz elementlarning qiymatlarini olishimiz yoki o'zgartirishimiz mumkin:




1
2
3
4
5
6
7
8
9
10

void main (){
var map = {
1: "Tom",
2: "Bob",
3: "Sam"
};
map[2] = "Alice"; // установим значение элемента с ключом 2
print(map[2]); // получим значение элемента с ключом 2
}

Xuddi shunday, siz turli xil turdagi kalitlar va qiymatlarga ega Map ob'ektlarini yaratishingiz mumkin. Masalan, Map obyekti (kalitlar va qiymatlar String tipidagi):




1
2
3
4
5
6
7
8
9
10
11

void main (){
var countries = {
"Spain" : "Madrid",
"France" : "Paris",
"Germany": "Berlin"
};
print(countries["Spain"]); // Madrid
print(countries["Germany"]); // Berlin
print(countries["France"]); // Paris
}

Xarita konstruktoridan foydalanib, siz bo'sh Map ob'ektini yaratishingiz va keyin unga ob'ektlar qo'shishingiz mumkin:




1
2
3
4
5
6
7
8

void main (){
var map = Map(); // пустой Map
map[1] = "Alice";
map[44] = "Bob";
map[6] = "Sam";
}

Yangi element qo'shish juda oddiy: biz kalitni kvadrat qavs ichida ko'rsatamiz va unga qiymat beramiz (xarita [6] = "Sam";)


Xarita xususiyatlari va usullari


Asosiy xususiyatlar:

yozuvlar: barcha Xarita elementlarini ifodalovchi takrorlanadigan > obyektini qaytaradi


tugmalar: Xaritaning barcha tugmachalarini ifodalovchi takrorlanadigan obyektini qaytaradi


qiymatlar: Barcha Xarita qiymatlarini ifodalovchi takrorlanadigan obyektini qaytaradi


uzunlik: Xaritadagi elementlar sonini qaytaradi


isEmpty: Xarita bo'sh bo'lsa, true qiymatini qaytaradi

Xaritadagi har bir element aslida MapEntry ob'ektini ifodalaydi, bu erda K - tugmalar turi va V - qiymatlar turi. Bu tip ikkita xususiyatga ega: kalit (elementning kaliti) va qiymat (element qiymatini saqlaydi). Ushbu xususiyatlardan foydalanib, biz Xaritadagi elementlarning mazmunini olishimiz mumkin. Masalan, Xaritaning barcha elementlari va barcha kalitlari va qiymatlarini alohida-alohida takrorlaymiz:


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28

void main (){
var map = { 5 : "Tom"};
map[1] = "Alice";
map[44] = "Bob";
map[6] = "Sam";
// перебор всех элементов
print("All items");
for(var item in map.entries){
// item представляет MapEntry
print("${item.key} - ${item.value}");
}
// перебор ключей
print("Keys");
for(var key in map.keys){
print(key);
}
// перебор значений
print("Values");
for(var value in map.values){
print(value);
}
}

Konsol chiqishi:

All items
5 - Tom
1 - Alice
44 - Bob
6 - Sam

Keys
5


1
44
6

Values
Tom


Alice
Bob
Sam

Asosiy xarita usullari:


addAll (Map other): Xaritaga boshqa Map ob'ektini qo'shadi


addEntries (Iterable > newEntries): Xaritaga takrorlanadigan > toʻplamini qoʻshadi


tozalash (): Xaritadan barcha elementlarni olib tashlaydi


containKey (Ob'ekt kaliti): agar Xaritada kalit kaliti bo'lsa, true qiymatini qaytaradi


containValue (Ob'ekt qiymati): Xaritada qiymat mavjud bo'lsa, true qiymatini qaytaradi


olib tashlash (Ob'ekt kaliti): Xaritadan kalit tugmasi bo'lgan elementni olib tashlaydi


Usullarni qo'llash:




1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

void main (){
var map = { "Germany" : "Berlin"};
map.addAll({"France" : "Paris", "Spain": "Madrid"}); // добавляем Map
print(map.containsKey("Poland")); // false
print(map.containsKey("France")); // true
print(map.containsValue("Madrid")); // true
// удаляем элемент с ключом "Spain"
map.remove("Spain");
print(map.containsKey("Spain")); // false
print(map.containsValue("Madrid")); // false
}



Download 374.15 Kb.

Do'stlaringiz bilan baham:
1   ...   24   25   26   27   28   29   30   31   ...   35




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling