3-modul · 3-dars: Collections · List · ArrayList
Daraja: O'rta
Collections · List · ArrayList. Exception va Collections bo‘yicha nazariya, amaliy namuna va mustaqil mashq.
Tushuntirish
## Dars maqsadi Collections · List · ArrayList tushunchalarini farqlash, nima uchun kerakligini izohlash va kichik misolda qo‘llash.
## Nazariya O'lchami qat'iy — kengaytirib bo'lmaydi; o'rtaga qo'shish/o'chirish qiyin; faqat bitta tur saqlaydi.
O'lchamni avtomatik o'zgartiradi, qo'shish/o'chirish oson, ko'p tayyor method beradi.
## Intervyuga tayyorgarlik ### Arraylar bilan qanday muammo bor? O'lchami qat'iy — kengaytirib bo'lmaydi; o'rtaga qo'shish/o'chirish qiyin; faqat bitta tur saqlaydi.
### Dynamic arraylarning qulay taraflari qanday? O'lchamni avtomatik o'zgartiradi, qo'shish/o'chirish oson, ko'p tayyor method beradi.
### Collections Framework nima? Ma'lumot tuzilmalari (List, Set, Map, Queue) va ular ustidagi algoritmlarni beruvchi standart arxitektura (`java.util`).
### Collections Framework ning qulay taraflari qanday? Tayyor, sinovdan o'tgan tuzilmalar; yagona interfeys; kamroq kod; yuqori samaradorlik.
### Collections Framework ning eng katta super classi qaysi? `Iterable` interfeysi (uning ostida `Collection`). `Map` esa alohida — Collection dan meros olmaydi.
### Collectionning qanday turlari bor? `List`, `Set`, `Queue` (va ularning avlodlari). `Map` alohida ierarxiya.
### Map Collection ichiga kiradimi? Yo'q. `Map` `Collection` interfeysidan meros olmaydi — bu alohida (key-value) ierarxiya.
### Collectionda primitive typelar ishlata olamizmi? Yo'q, faqat obyekt (reference). Primitivlar wrapper (autoboxing) orqali saqlanadi.
### Collection nima uchun kerak? Ma'lumot to'plamini samarali saqlash, izlash, saralash va boshqarish uchun.
### Collection Framework qaysi packageda joylashgan? `java.util`.
### Collection Framework asosiy interfacelarini ayting. `Collection`, `List`, `Set`, `Queue`, `Deque`, `Map` (va `SortedSet`, `SortedMap`).
### Collection Framework sort qilish uchun asosiy interfacelar? `Comparable` va `Comparator`.
### List interface nima? Tartiblangan (index bilan) va takror (duplicate) elementlarga ruxsat beruvchi collection.
### List interface asosiy xususiyatlarini ayting. Index bilan kirish, qo'shilish tartibi saqlanadi, duplicate va null ga ruxsat.
### List interfacening foydali tomonlari nimada? Index orqali tez kirish, tartibni saqlash va moslashuvchan qo'shish/o'chirish.
### List interfaceni subclasslari qaysi? `ArrayList`, `LinkedList`, `Vector`, `Stack`.
### ArrayList nima? Dynamic array asosidagi List implementatsiyasi — o'lchami avtomatik oshadi.
### ArrayList qaysi interfacedan voris olgan? `List` (→ `Collection` → `Iterable`), shuningdek `RandomAccess`ni implement qiladi.
### ArrayList qaysi marker interfacelardan voris olgan? `RandomAccess`, `Cloneable`, `Serializable`.
### ArrayList ning asosiy xususiyatlarini ayting. Index bilan tez kirish (O(1)), tartib saqlanadi, duplicate va null ga ruxsat, thread-safe emas.
### ArrayList duplikat elementlarni saqlaydimi? Ha, saqlaydi.
### ArrayListga null qo'sha olamizmi? Ha, bir nechta null ham qo'shsa bo'ladi.
### ArrayList elementlarni xotirada qanday tartibda saqlaydi? Qo'shilish tartibida (insertion order), ketma-ket indekslar bilan.
### ArrayList bilan Array o'rtasidagi farq? Array o'lchami qat'iy va primitive ham saqlaydi; ArrayList dinamik, faqat obyekt, ko'p tayyor method.
### ArrayListning kamchiliklari? O'rtaga qo'shish/o'chirish sekin (elementlar suriladi), thread-safe emas, autoboxing qo'shimcha yuk.
### ArrayListning loadFactory-si necha foiz? ArrayList da load factor tushunchasi yo'q; o'lchami to'lganda capacity ~1.5 barobar oshadi (default capacity 10).
### ArrayListdan elementlarni olishning necha xil usuli bor? `get(index)`, `for`/`for-each`, `Iterator`, `ListIterator`, `stream()`.
## Versiya va aniqlik Java misollari Java 17 bazasiga mo‘ljallangan. JDK/JRE paketlash usuli distributivga bog‘liq; JVM bayt-kodni interpretatsiya va JIT orqali bajarishi mumkin. GC uchun aniq bajarilish vaqtiga kafolat yo‘q; finalization resurs yopish usuli emas. Thread stop/suspend/resume kabi eski metodlar amaliy yechim emas. Koddagi import, klass yoki tashqi kutubxona kontekstini tekshiring.
## Manbalar [Moduldagi savollar yo‘nalishi](https://github.com/jlkesh/pdp_online_java_lessons/blob/main/interviewquestions/3-module.md) [Rasmiy qo‘llanma](https://dev.java/learn/api/collections-framework/) [Sizning avvalgi savol-javob arxivingiz](https://lightyer.uz/java/interview.html)
Kod quyida o‘quv namunasi sifatida berilgan. To‘liq ilova uchun import, dependency va konfiguratsiya kerak bo‘lishi mumkin. SQLni faqat ajratilgan test bazasida bajaring.
Kod misoli
var names = new java.util.ArrayList<String>();
names.add("Ali");
names.add("Vali");
names.set(0, "Aziz");
System.out.println(names.get(0));
Keng tarqalgan xatolar
- Ro'yxatdan tsikl ichida `remove()` qilish - ConcurrentModificationException chiqadi.
- `List.of(...)` natijasini o'zgartirmoqchi bo'lish - u o'zgarmas ro'yxat.
Mashqlar
- Ro'yxatdan juft sonlarni `removeIf` va iterator bilan ikki xil usulda o'chiring.
- 1 000 000 element qo'shishda `ArrayList` va `LinkedList` vaqtini o'lchang.
Teglar: pdp, nazariya, modul-03