3-modul · 7-dars: Map · HashMap · TreeMap · WeakHashMap
Daraja: O'rta
Map · HashMap · TreeMap · WeakHashMap. Exception va Collections bo‘yicha nazariya, amaliy namuna va mustaqil mashq.
Tushuntirish
## Dars maqsadi Map · HashMap · TreeMap · WeakHashMap tushunchalarini farqlash, nima uchun kerakligini izohlash va kichik misolda qo‘llash.
## Nazariya Key-value juftliklarini saqlaydigan tuzilma; key unique bo'ladi.
`HashMap`, `LinkedHashMap`, `TreeMap`, `Hashtable`, `WeakHashMap`, `ConcurrentHashMap`.
## Intervyuga tayyorgarlik ### Map nima? Key-value juftliklarini saqlaydigan tuzilma; key unique bo'ladi.
### Map interfaceni subclasslarini sanang. `HashMap`, `LinkedHashMap`, `TreeMap`, `Hashtable`, `WeakHashMap`, `ConcurrentHashMap`.
### Map asosiy xususiyatlari? Unique key, har key bitta value, tartib implementatsiyaga bog'liq.
### Map Hierarchy-ni ayting. `Map` → (`SortedMap` → `NavigableMap` → `TreeMap`), hamda `HashMap`, `LinkedHashMap`, `Hashtable`.
### Map nima uchun Object classining hashCode() methodidan foydalanadi? Key qaysi bucket ga tushishini tez aniqlash (izlash/qo'shish O(1)) uchun.
### Qaysi operatsiyalar uchun Map dan foydalanamiz? Kalit orqali qiymatni tez izlash, saqlash va yangilash kerak bo'lganda (lug'at kabi).
### Map key-ga null qiymat bersak nima bo'ladi? HashMap 1 ta null key va ko'p null value ga ruxsat beradi; TreeMap va Hashtable null key ni rad etadi.
### Map-ni iteratsiya paytida o'zgartirsak nima bo'ladi? Fail-fast Map larda `ConcurrentModificationException`; `Iterator.remove()` yoki `ConcurrentHashMap` xavfsiz.
### HashMap nima? Hash table asosidagi Map — O(1) qo'shish/izlash, tartibsiz.
### HashMap asosiy xususiyatlari? Unique key, 1 null key + ko'p null value, tartib yo'q, thread-safe emas.
### HashMap va HashSet o'rtasidagi farq? HashSet elementlar to'plami (ichkarida HashMap dan foydalanadi); HashMap key-value juftliklarini saqlaydi.
### HashMap elementlarni qanday tartibda saqlaydi? Tartibsiz — hash(key) asosida bucket larda.
### HashMap key-ga duplicate elementlarni saqlashimiz mumkinmi? Yo'q; bir xil key qo'shilsa eski value yangisi bilan almashadi.
### HashMap initial capacity va loadFactory-ni ayting. Initial capacity 16, load factor 0.75 (75% to'lganda capacity 2 barobar oshadi — resize).
### HashMap tezmi yoki HashSet? Ikkalasi ham hash table asosida O(1). HashSet ichkarida HashMap dan foydalangani uchun deyarli teng (HashMap bevosita, HashSet ustma-ust qatlam).
### HashMap necha xil yo'l bilan elementlarni olishimiz mumkin? `get(key)`, `keySet()`, `values()`, `entrySet()`, `forEach()`.
### HashMap elementni internal nimada saqlaydi? `Node<K,V>` (bucket) massivida; to'qnashuvda linked list, ko'payganda (8+) Red-Black tree (Java 8 dan).
### LinkedHashMap nima? HashMap + qo'shilish (yoki access) tartibini saqlaydigan Map.
### LinkedHashMap Java-ning nechinchi versiyasida qo'shilgan? Java 4 (JDK 1.4).
### LinkedHashMap va HashMap o'rtasidagi farq? LinkedHashMap tartibni saqlaydi (linked list bilan), HashMap saqlamaydi.
### LinkedHashMap thread-safe mi? Yo'q.
### LinkedHashMap initial capacity va loadFactory-si? 16 va 0.75 (HashMap kabi).
### LinkedHashMap elementlarni qanday tartibda saqlaydi? Qo'shilish tartibida — yoki `accessOrder=true` bo'lsa oxirgi ishlatilish tartibida (LRU kesh uchun).
### LinkedHashMap synchronized mi? Yo'q.
### LinkedHashMap key-ga nechtagacha null qiymat qo'shamiz? 1 ta null key (va ko'p null value).
### TreeMap nima? Key-larni saralangan tartibda saqlaydigan, Red-Black tree asosidagi Map.
### TreeMap-da elementlar Comparator implement qilgan bo'lishi kerakmi? Key lar `Comparable` bo'lishi yoki TreeMap ga `Comparator` berilishi kerak; aks holda `ClassCastException`.
### TreeMap va HashMap o'rtasidagi farq? TreeMap saralangan, O(log n), null key yo'q. HashMap tartibsiz, O(1), 1 null key.
### TreeMap qanday data structure ishlatadi? Red-Black tree (balansli binary search tree).
### TreeMap qanday ishlaydi? Key-lar solishtirilib (Comparable/Comparator) daraxtga saralangan holda joylashadi; izlash/qo'shish O(log n).
### TreeMap-ga null key qo'shamizmi? Yo'q (solishtirish kerak bo'lgani uchun); null value esa mumkin.
### TreeMap asinxronmi? Ha (synchronized emas) — thread-safe emas.
### WeakHashMap nima? Key-lari weak reference bilan saqlanadigan Map; key ga boshqa havola qolmasa, GC uni (va juftligini) tozalaydi.
### WeakReference nima? Obyektga «kuchsiz» havola; agar faqat weak havola qolsa, GC obyektni yig'ishtirishi mumkin.
### WeakHashMap synchronized mi? Yo'q.
### WeakHashMap elementlarni qo'shish tartibini saqlaydimi? Yo'q.
### WeakHashMap-ga nechtagacha null key qo'shamiz? 1 ta.
### WeakHashMap-ga duplicate key qo'shamizmi? Yo'q — bir xil key value ni almashtiradi.
### WeakHashMap va HashMap o'rtasidagi farq? WeakHashMap key-lari weak reference (GC tozalashi mumkin, keshlar uchun). HashMap key-lari strong reference (o'zi tozalanmaydi).
## 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 counts = new java.util.HashMap<String, Integer>();
for (String word : java.util.List.of("java", "sql", "java")) {
counts.merge(word, 1, Integer::sum);
}
System.out.println(counts.get("java")); // 2
Keng tarqalgan xatolar
- `equals`/`hashCode` kontraktini buzish - qo'yilgan qiymat keyin topilmay qoladi.
- Kalit sifatida o'zgaruvchan (mutable) obyekt ishlatish: maydon o'zgarsa hash ham o'zgaradi.
Mashqlar
- Matndagi so'zlarni `HashMap` bilan sanang, keyin `merge` yoki `computeIfAbsent` bilan qayta yozing.
- Kalit obyektni Map ga qo'ygandan keyin o'zgartirib, `get` nima qaytarishini ko'ring.
Teglar: pdp, nazariya, modul-03