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.