3-modul · 9-dars: Collections class · Optional · SOLID
Daraja: O'rta
Collections class · Optional · SOLID. Exception va Collections bo‘yicha nazariya, amaliy namuna va mustaqil mashq.
Tushuntirish
## Dars maqsadi Collections class · Optional · SOLID tushunchalarini farqlash, nima uchun kerakligini izohlash va kichik misolda qo‘llash.
## Nazariya Collection lar bilan ishlash uchun static utility methodlar beruvchi class (`java.util.Collections`).
List ni tabiiy tartib yoki berilgan Comparator bo'yicha saralaydi.
## Intervyuga tayyorgarlik ### Collections nima? Collection lar bilan ishlash uchun static utility methodlar beruvchi class (`java.util.Collections`).
### Collections classining sort() methodi nima qiladi? List ni tabiiy tartib yoki berilgan Comparator bo'yicha saralaydi.
### Collections classining shuffle() methodi nima qiladi? List elementlarini tasodifiy tartibda aralashtiradi.
### Collections class methodlaridan nima maqsadda foydalanamiz? Saralash, izlash, aralashtirish, min/max, reverse, o'zgarmas/sinxron ko'rinish yaratish uchun.
### Optional nima? Qiymat bor yoki yo'qligini ifodalovchi konteyner class; null va NullPointerException ni kamaytiradi.
### Optional isPresent() method nima uchun kerak? Ichida qiymat bor-yo'qligini tekshirish uchun (bor bo'lsa `true`).
### Optional Java-ning nechinchi versiyasida qo'shilgan? Java 8.
### Optional class Java-ga nima maqsadda qo'shilgan? `null` bilan bog'liq NPE muammolarini kamaytirish va «qiymat yo'q» holatini aniq ifodalash uchun.
### SOLID nima? Yaxshi obyektga yo'naltirilgan dizayn uchun 5 tamoyildan iborat to'plam.
### SOLID-ni tushuntirib bering. S — Single Responsibility (bitta mas'uliyat); O — Open/Closed (kengaytirishga ochiq, o'zgartirishga yopiq); L — Liskov Substitution (subclass superclass o'rnini bosa olishi); I — Interface Segregation (kichik, aniq interfeyslar); D — Dependency Inversion (abstraksiyaga bog'lanish).
## 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
String raw = null;
String name = java.util.Optional.ofNullable(raw)
.filter(s -> !s.isBlank()).orElse("Mehmon");
System.out.println(name);
Keng tarqalgan xatolar
- `Optional` ni maydon yoki parametr sifatida ishlatish - u qaytish turi uchun mo'ljallangan.
- `optional.get()` ni tekshirmasdan chaqirish - bu `null` tekshiruvidan yaxshiroq emas.
Mashqlar
- `orElse`, `orElseGet` va `orElseThrow` farqini misolda ko'rsating.
- O'z kodingizdan SOLID ning bitta printsipi buzilgan joyni topib, tuzating.
Teglar: pdp, modul-03, nazariya