3-modul · 6-dars: Queue · Deque
Daraja: O'rta
Queue · Deque. Exception va Collections bo‘yicha nazariya, amaliy namuna va mustaqil mashq.
Tushuntirish
## Dars maqsadi Queue · Deque tushunchalarini farqlash, nima uchun kerakligini izohlash va kichik misolda qo‘llash.
## Nazariya FIFO tartibda ishlaydigan — bir uchidan qo'shib, boshqa uchidan oladigan collection.
First In First Out — birinchi kirgan birinchi chiqadi.
## Intervyuga tayyorgarlik ### Queue nima? FIFO tartibda ishlaydigan — bir uchidan qo'shib, boshqa uchidan oladigan collection.
### FIFO nima? First In First Out — birinchi kirgan birinchi chiqadi.
### Queue Interface methodlarini ayting. `add()/offer()` (qo'shish), `remove()/poll()` (olish+o'chirish), `element()/peek()` (ko'rish). `offer/poll/peek` xato o'rniga null/false qaytaradi.
### Queue necha xil turi bor? `PriorityQueue`, `LinkedList`, `ArrayDeque`, `ConcurrentLinkedQueue` va boshqalar.
### Queue asosiy xususiyatlarini ayting. FIFO tartib (PriorityQueue bundan mustasno), bosh/oxirdan amallar.
### Queue-ga null element qo'shamizmi? Ko'pchilik (LinkedList) ruxsat bersa ham, `PriorityQueue` va `ArrayDeque` null ni rad etadi — tavsiya etilmaydi.
### Queue-ga duplicate elementlarni qo'shamizmi? Ha, ruxsat beriladi.
### Queue interface sub-interfacelarini ayting. `Deque`, `BlockingQueue`.
### PriorityQueue nima? Elementlarni ustuvorlik (priority) bo'yicha saralab beruvchi queue (min-heap asosida).
### PriorityQueue-ga null element qo'shamizmi? Yo'q, null ruxsat etilmaydi.
### PriorityQueue asosiy xususiyatlarini ayting. Elementlar tabiiy tartib yoki Comparator bo'yicha saralanadi; bosh element eng yuqori ustuvorlikda; thread-safe emas.
### PriorityQueue thread-safe mi? Yo'q (thread-safe varianti — `PriorityBlockingQueue`).
### Deque nima? Double Ended Queue — ikki uchidan ham qo'shish/olish mumkin bo'lgan queue.
### Deque hierarchysini ayting. `Deque` → `Queue` → `Collection`.
### Deque-ning asosiy xususiyatlarini ayting. Ham FIFO (queue), ham LIFO (stack) sifatida ishlaydi; `addFirst/addLast`, `pollFirst/pollLast`.
### LIFO nima? Last In First Out — oxirgi kirgan birinchi chiqadi (stack).
## 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<Integer> stack = new java.util.ArrayDeque<>();
stack.push(1);
stack.push(2);
System.out.println(stack.pop()); // 2
Keng tarqalgan xatolar
- `Queue` ga `add()` va `offer()` ni bir xil deb bilish: to'lganda biri exception, biri `false` qaytaradi.
- `PriorityQueue` ni iteratsiya qilganda saralangan tartib chiqadi deb kutish.
Mashqlar
- Vazifalar navbatini `ArrayDeque` bilan yasab, FIFO va LIFO ishlatib ko'ring.
- `PriorityQueue` ga `Comparator` berib, eng muhim vazifani birinchi chiqaring.
Teglar: modul-03, pdp, nazariya