3-modul · 4-dars: LinkedList · Vector
Daraja: O'rta
LinkedList · Vector. Exception va Collections bo‘yicha nazariya, amaliy namuna va mustaqil mashq.
Tushuntirish
## Dars maqsadi LinkedList · Vector tushunchalarini farqlash, nima uchun kerakligini izohlash va kichik misolda qo‘llash.
## Nazariya Doubly-linked list asosidagi `List` va `Deque` implementatsiyasi — har element (node) keyingi va oldingiga havola qiladi.
Node-lar orqali: har node data + oldingi/keyingi node havolasini saqlaydi (ketma-ket emas, tarqoq).
## Intervyuga tayyorgarlik ### LinkedList nima? Doubly-linked list asosidagi `List` va `Deque` implementatsiyasi — har element (node) keyingi va oldingiga havola qiladi.
### LinkedList elementlarni xotirada qanday saqlaydi? Node-lar orqali: har node data + oldingi/keyingi node havolasini saqlaydi (ketma-ket emas, tarqoq).
### LinkedListning qanday turlari bor? Singly linked, Doubly linked va Circular linked list (Java `LinkedList` — doubly linked).
### LinkedListning ArrayListdan qanday afzalligi bor? Bosh/o'rtaga qo'shish va o'chirish tez (O(1) — faqat node havolasi o'zgaradi), elementlarni surish shart emas.
### LinkedListning qanday kamchiliklari bor? Index bilan kirish sekin (O(n)), har node uchun qo'shimcha xotira (havolalar).
### LinkedList va ArrayList o'rtasidagi farq? ArrayList — array asosli, index bilan tez kirish. LinkedList — node asosli, qo'shish/o'chirish tez, kirish sekin.
### LinkedList initial capacity-si nima uchun nol? Chunki u dinamik node-lardan iborat — oldindan joy ajratilmaydi, har qo'shishda yangi node yaratiladi.
### Node nima? Ma'lumot va boshqa node(lar)ga havolani saqlaydigan tuzilma birligi.
### LinkedList qanday data strukturadan foydalanadi? Doubly linked list.
### LinkedList loadFactory-si necha foiz? Yo'q — load factor faqat hash asosli tuzilmalarda bo'ladi; LinkedList da qo'llanmaydi.
### LinkedList ning super classi qaysi? `AbstractSequentialList` (u `AbstractList` → `AbstractCollection`).
### LinkedListdan elementni olish nima uchun sekin? Chunki index bo'yicha node topish uchun boshdan (yoki oxirdan) ketma-ket yurish kerak (O(n)).
### Vector nima? ArrayList kabi dinamik array, lekin synchronized (thread-safe) — eski (legacy) class.
### Vector classining super classi qaysi? `AbstractList`.
### Vector class nima uchun JDK 5 dan deprecated hisoblanadi? To'liq deprecated emas, lekin legacy hisoblanadi: har amal synchronized bo'lgani uchun sekin. O'rniga `ArrayList` yoki `CopyOnWriteArrayList` tavsiya etiladi.
### Vector classining initial capacity-si nechi? 10.
### Vector va ArrayList o'rtasidagi farq? Vector synchronized (thread-safe) va sekin, capacity 2 barobar oshadi. ArrayList sync emas, tez, ~1.5 barobar oshadi.
### Vector nima uchun ArrayListdan sekin? Har bir methodi synchronized — qulflash (lock) qo'shimcha yuk beradi.
### Vector thread-safe mi? Bo'lsa nima uchun? Ha — chunki methodlari `synchronized`.
### Vectordan elementlarni necha xil usulda olishimiz mumkin? `get()`, `elementAt()`, `Enumeration`, `Iterator`, `ListIterator`, `for-each`.
### Vectorga iteratsiya paytida o'zgartirish kiritsak nima bo'ladi? `Iterator` orqali yursak `ConcurrentModificationException` (fail-fast); `Enumeration` esa fail-fast emas.
## 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
java.util.Deque<String> queue = new java.util.LinkedList<>();
queue.addLast("bir");
queue.addLast("ikki");
System.out.println(queue.removeFirst()); // bir
Keng tarqalgan xatolar
- LinkedList ni indeks bo'yicha tsiklda o'qish - har `get(i)` boshidan yuradi, natija kvadratik sekinlik.
- Har doim LinkedList tezroq deb o'ylash: amalda ArrayList ko'p holatda ustun.
Mashqlar
- Bir xil amalni ikkala ro'yxatda bajarib, vaqtni jadval qilib yozing.
- `Deque` sifatida `LinkedList` va `ArrayDeque` ni solishtiring.
Teglar: pdp, modul-03, nazariya