Darsliklar Java ArrayList va LinkedList

Java Java ArrayList va LinkedList

ArrayList va LinkedList — List interfeysining ikki asosiy amalga oshirilishi. Ikkovi ham tartiblangan, takrorga ruxsat beruvchi ro’yxat, ammo ichki tuzilishi va tezligi bilan farq qiladi. To’g’ri birini tanlash dastur samaradorligiga ta’sir qiladi.

ArrayList — ichki tarzda dinamik massivga asoslangan ro’yxat. LinkedList — har bir element keyingisiga ishora qiladigan bog’langan tugunlar zanjiri.

ArrayList bilan ishlash

ArrayList — eng ko’p ishlatiladigan ro’yxat. Uning asosiy metodlarini ko’ramiz:

import java.util.ArrayList;

public class Main {
    public static void main(String[] args) {
        ArrayList<String> royxat = new ArrayList<>();
        royxat.add("telefon");
        royxat.add("noutbuk");
        royxat.add(1, "planshet");   // 1-indeksga qo'shadi
        royxat.set(0, "smart soat"); // 0-indeksni o'zgartiradi
        royxat.remove("noutbuk");    // qiymat bo'yicha o'chiradi

        System.out.println(royxat);
    }
}
[smart soat, planshet]

add qo’shadi, set o’zgartiradi, remove o’chiradi. ArrayList indeks bo’yicha murojaatda juda tez.

ArrayList bo’ylab yurish

Ro’yxatni for-each bilan aylanib chiqish eng qulay usul:

import java.util.ArrayList;

public class Main {
    public static void main(String[] args) {
        ArrayList<Integer> ballar = new ArrayList<>();
        ballar.add(85);
        ballar.add(92);
        ballar.add(78);

        int yigindi = 0;
        for (int ball : ballar) {
            yigindi += ball;
        }
        System.out.println("Yig'indi: " + yigindi);
    }
}
Yig'indi: 255

ArrayList va LinkedList: qaysi biri qachon?

Ikkovining tezlik farqini jadvalda ko’ramiz:

Amal ArrayList LinkedList
Indeks bo’yicha o’qish tez sekin
Oxiriga qo’shish tez tez
O’rtaga qo’shish/o’chirish sekin tez
Xotira kam ko’proq

Amaliy qoida: ko’p o’qish kerak bo’lsa — ArrayList; ko’p qo’shish/o’chirish (ayniqsa o’rtada) kerak bo’lsa — LinkedList.

LinkedList bilan ishlash

LinkedList bir xil metodlarga ega, ustiga navbat (queue) va stek (stack) kabi ishlash imkonini beradi:

import java.util.LinkedList;

public class Main {
    public static void main(String[] args) {
        LinkedList<String> navbat = new LinkedList<>();
        navbat.add("Farrux");
        navbat.addFirst("Master Sherkulov");   // boshiga qo'shadi
        navbat.addLast("Aziz");                // oxiriga qo'shadi

        System.out.println(navbat);
        System.out.println("Birinchi: " + navbat.getFirst());
    }
}
[Master Sherkulov, Farrux, Aziz]
Birinchi: Master Sherkulov

addFirst va addLast — LinkedList ning maxsus metodlari. Ular boshi va oxiriga element qo’shishni juda tez bajaradi.

Xulosa

Bu bo’limda ArrayList va LinkedList bilan ishlashni, ularning tezlik farqini va tanlov qoidasini ko’rib chiqdik. ArrayList — o’qish uchun, LinkedList — tez-tez o’zgartirish uchun. Keyingi darsda Map va Set — kalit-qiymat va takrorlanmas to’plamlarga o’tamiz.