18. Collections

Oldingi boblarda array bilan ishlashni o‘rgandik.

Masalan:

int[] sonlar = {10, 20, 30};

Array foydali, lekin uning bir cheklovi bor:

Array hajmi o‘zgarmaydi.

Masalan:

int[] sonlar = new int[3];

Bu array faqat 3 ta element saqlay oladi.

Java'da ma'lumotlarni yanada qulay saqlash uchun Collections ishlatiladi.

Collection nima?

Collection — bir nechta ma'lumotni bir joyda saqlash uchun ishlatiladigan Java klasslari.

Eng ko‘p ishlatiladiganlari:

ArrayList
HashSet
HashMap

Hozircha ArrayListdan boshlaymiz.

ArrayList

ArrayList arrayga o‘xshaydi, lekin uning hajmini o‘zgartirish mumkin.

Masalan:

import java.util.ArrayList;

ArrayList<String> ismlar = new ArrayList<>();

Endi unga ism qo‘shamiz:

ismlar.add("Ali");
ismlar.add("Vali");
ismlar.add("Hasan");

ArrayList ichida:

Ali
Vali
Hasan

bo‘ladi.

Elementni olish

Elementni olish uchun get() ishlatiladi.

System.out.println(ismlar.get(0));

Natija:

Ali

Indeks 0 dan boshlanadi.

0 → Ali
1 → Vali
2 → Hasan

Element qo‘shish

add() yangi element qo‘shadi.

ismlar.add("Husan");

Endi:

Ali
Vali
Hasan
Husan

bo‘ladi.

Elementni o‘chirish

remove() elementni o‘chiradi.

ismlar.remove(1);

Bu 1 indeksdagi elementni o‘chiradi.

Natija:

Ali
Hasan
Husan

Elementni o‘zgartirish

set() yordamida elementni o‘zgartirish mumkin.

ismlar.set(0, "Akmal");

Natija:

Akmal
Hasan
Husan

ArrayList hajmi

ArrayList nechta element borligini size() orqali bilamiz.

System.out.println(ismlar.size());

Masalan, natija:

3

ArrayList bilan loop

ArrayList ichidagi barcha elementlarni chiqarish mumkin.

for (String ism : ismlar) {

    System.out.println(ism);
}

Natija:

Ali
Vali
Hasan

To‘liq misol

import java.util.ArrayList;

public class Main {

    public static void main(String[] args) {

        ArrayList<String> ismlar = new ArrayList<>();

        ismlar.add("Ali");
        ismlar.add("Vali");
        ismlar.add("Hasan");

        for (String ism : ismlar) {

            System.out.println(ism);
        }
    }
}

Natija:

Ali
Vali
Hasan

ArrayList<Integer>

ArrayList faqat String uchun emas.

Sonlarni ham saqlash mumkin.

ArrayList<Integer> sonlar = new ArrayList<>();

sonlar.add(10);
sonlar.add(20);
sonlar.add(30);

Keyin:

System.out.println(sonlar.get(1));

Natija:

20

ArrayList va array farqi

Array:

int[] sonlar = new int[3];

Array hajmi oldindan belgilanadi.

ArrayList:

ArrayList<Integer> sonlar = new ArrayList<>();

ArrayListga kerak bo‘lganda yangi element qo‘shish mumkin.

Masalan:

sonlar.add(10);
sonlar.add(20);
sonlar.add(30);
sonlar.add(40);

HashSet

HashSet ham bir nechta element saqlaydi.

Lekin unda bir xil elementlar takrorlanmaydi.

import java.util.HashSet;

HashSet<String> ismlar = new HashSet<>();

ismlar.add("Ali");
ismlar.add("Vali");
ismlar.add("Ali");

Natijada faqat:

Ali
Vali

bo‘ladi.

Ali ikki marta qo‘shilgan bo‘lsa ham, faqat bir marta saqlanadi.

HashMap

HashMap ma'lumotlarni key va value ko‘rinishida saqlaydi.

Masalan:

import java.util.HashMap;

HashMap<String, Integer> yoshlar = new HashMap<>();

Endi:

yoshlar.put("Ali", 20);
yoshlar.put("Vali", 25);

Bu yerda:

Ali  → 20
Vali → 25

Ali va Vali — key.

20 va 25 — value.

HashMapdan qiymat olish

System.out.println(yoshlar.get("Ali"));

Natija:

20

Hozircha nimani bilish kerak?

Collections juda katta mavzu.

Hozircha quyidagilarni eslab qolish kifoya:

ArrayList → tartibli ro‘yxat
HashSet   → takrorlanmaydigan elementlar
HashMap   → key va value

Amaliy mashqlar

1-mashq

ArrayList<String> yarating.

Unga 5 ta ism qo‘shing.

Keyin barcha ismlarni loop yordamida chiqaring.

2-mashq

ArrayList<Integer> yarating.

Unga 5 ta son qo‘shing.

Keyin sonlarning umumiy sonini size() yordamida chiqaring.

3-mashq

HashSet<String> yarating.

Bir xil ismni ikki marta qo‘shib ko‘ring.

Natijani kuzating.

4-mashq

HashMap<String, Integer> yarating.

3 ta odamning ismi va yoshini saqlang.

Keyin bitta odamning yoshini get() yordamida chiqaring.

Muhim narsalarni eslab qoling

Collection — bir nechta ma'lumotni saqlash uchun ishlatiladi.

ArrayList — o‘zgaruvchan ro‘yxat.

ArrayList<String> ismlar = new ArrayList<>();

Element qo‘shish:

ismlar.add("Ali");

Element olish:

ismlar.get(0);

Element o‘chirish:

ismlar.remove(0);

Hajmini olish:

ismlar.size();

HashSet — takrorlanmaydigan elementlar uchun.

HashMapkey va value juftliklari uchun.