3-modul · 10-dars: Legacy Collections · i18n · Wildcard
Daraja: O'rta
Legacy Collections · i18n · Wildcard. Exception va Collections bo‘yicha nazariya, amaliy namuna va mustaqil mashq.
Tushuntirish
## Dars maqsadi Legacy Collections · i18n · Wildcard tushunchalarini farqlash, nima uchun kerakligini izohlash va kichik misolda qo‘llash.
## Nazariya Key-value (String-String) sozlamalarni saqlaydigan `Hashtable` avlodi class — konfiguratsiya uchun.
Ilova sozlamalari, til/matn va konfiguratsiya fayllarini o'qish/yozishda.
## Intervyuga tayyorgarlik ### Properties nima? Key-value (String-String) sozlamalarni saqlaydigan `Hashtable` avlodi class — konfiguratsiya uchun.
### Properties-lardan qayerda foydalanamiz? Ilova sozlamalari, til/matn va konfiguratsiya fayllarini o'qish/yozishda.
### Properties qaysi fayllardan o'qish va yozishimiz mumkin? `.properties` (matn) va `.xml` fayllardan (`load()`, `store()`, `loadFromXML()`).
### HashTable nima? Synchronized, eski (legacy) hash asosidagi Map; null key/value ga ruxsat bermaydi.
### HashTable-ni qachon ishlatamiz? Legacy kodda; yangi kodda thread-safe kerak bo'lsa `ConcurrentHashMap` afzal.
### HashTable-ning loadFactory va initial capacity-si? Capacity 11, load factor 0.75.
### HashTable thread-safe mi? Ha — methodlari `synchronized`.
### HashTable da hashCode() va equals() contractlarni buzmaslik kerakmi? Ha — key sifatida ishlatilgan obyektlarda `equals()` va `hashCode()` to'g'ri va mos yozilishi shart, aks holda izlash noto'g'ri ishlaydi.
### Stack nima? LIFO tuzilma; `Vector` dan meros olgan legacy class (`push`, `pop`, `peek`).
### Stack Java-ning nechinchi versiyasida qo'shilgan? Java 1.0 dan.
### Deque va Stack o'rtasidagi farq? Stack legacy va synchronized (sekin); `Deque` (`ArrayDeque`) zamonaviy, tezroq va stack sifatida tavsiya etiladi.
### Stack synchronized mi? Ha (Vector dan meros olgani uchun).
### Stack initial capacity va loadFactory-si? Vector dan: capacity 10, o'lchami to'lganda 2 barobar oshadi.
### Stackdan necha xil usulda elementlarni olishimiz mumkin? `pop()`, `peek()`, `get()`, `Iterator`, `for-each`.
### i18n nima? Internationalization — ilovani turli til va mintaqalarga moslashtirish (18 — «internationalization» so'zidagi ichki harflar soni).
### ResourceBundle nima? Til/mintaqaga qarab matn va sozlamalarni (`.properties` fayllardan) yuklaydigan class.
### ResourceBundle-ni qanday holatlarda ishlatamiz? Ilova matnlarini bir necha tilga tarjima qilish (lokalizatsiya) uchun.
### Wildcard Type nima? Generic-da noma'lum turni ifodalovchi `?` belgisi (masalan `List<?>`).
### Wildcard Typelardan qanday holatlarda foydalanamiz? Turlar oilasi bilan moslashuvchan ishlash kerak bo'lganda (`? extends T` — o'qish, `? super T` — yozish uchun).
### Wildcard Type Java-ning nechinchi versiyasida qo'shilgan? Java 5 (generics bilan).
### super va extends keywordlarini tushuntiring. `? extends T` — T yoki uning avlodlari (upper bound, o'qish uchun); `? super T` — T yoki uning ajdodlari (lower bound, yozish uchun). Qoida — PECS: Producer-Extends, Consumer-Super.
## 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
// Klass ichidagi metod: producer extends.
static double sum(java.util.List<? extends Number> numbers) {
double total = 0;
for (Number n : numbers) total += n.doubleValue();
return total;
}
Keng tarqalgan xatolar
- Yangi kodda `Hashtable`/`Vector` ishlatish - ular eski va deyarli har doim yomonroq tanlov.
- Wildcard da `extends` va `super` ni chalkashtirish (PECS qoidasini eslang).
Mashqlar
- `Properties` faylidan sozlama o'qib, uni dasturda ishlating.
- `? extends Number` va `? super Integer` bilan ikki metod yozib, qaysi biriga yozib bo'lishini sinang.
Teglar: modul-03, pdp, nazariya