3-modul · 5-dars: Set · Comparator · TreeSet

Daraja: O'rta

Set · Comparator · TreeSet. Exception va Collections bo‘yicha nazariya, amaliy namuna va mustaqil mashq.

Tushuntirish

## Dars maqsadi Set · Comparator · TreeSet tushunchalarini farqlash, nima uchun kerakligini izohlash va kichik misolda qo‘llash.

## Nazariya Takrorlanmaydigan (unique) elementlar to'plami — duplicate saqlamaydi.

Unique elementlar, ko'p implementatsiyada tartib yo'q, ko'pchiligi 1 ta null ga ruxsat.

## Intervyuga tayyorgarlik ### Set nima? Takrorlanmaydigan (unique) elementlar to'plami — duplicate saqlamaydi.

### Set-ning asosiy xususiyatlari? Unique elementlar, ko'p implementatsiyada tartib yo'q, ko'pchiligi 1 ta null ga ruxsat.

### Set interfaceni subclassini ayting. `HashSet`, `LinkedHashSet`, `TreeSet`.

### HashSet nima? Hash table (ichkarida `HashMap`) asosidagi Set — tez qo'shish/izlash, tartib yo'q.

### HashSet elementlarni saqlash uchun internal nimadan foydalanadi? Ichkarida `HashMap` (element key sifatida, qiymat esa doimiy dummy obyekt).

### HashSet thread-safe mi? Yo'q.

### HashSet elementlarni kirish tartibida saqlaydimi? Yo'q, tartib kafolatlanmaydi (hash asosida joylashadi).

### HashSet add() method qanday ishlaydi? Element `hashCode()` bilan bucket topiladi, so'ng `equals()` bilan takror tekshiriladi; takror bo'lmasa qo'shiladi.

### HashSet nima uchun duplicate elementlarni saqlab bo'lmaydi? `hashCode()` + `equals()` orqali element mavjudligini tekshirib, takrorini qo'shmaydi.

### LinkedHashSet nima? HashSet + qo'shilish tartibini (insertion order) saqlaydigan Set (ichida linked list bilan).

### LinkedHashSet va HashSet o'rtasidagi farq nima? LinkedHashSet qo'shilish tartibini saqlaydi, HashSet saqlamaydi (LinkedHashSet sal sekinroq, ko'proq xotira).

### LinkedHashSet Java-ning nechinchi versiyasida qo'shilgan? Java 4 (JDK 1.4).

### LinkedHashSet thread-safe mi? Yo'q.

### LinkedHashSet qaysi operatsiyalar uchun samarali? Tartibni saqlab, tez qo'shish/izlash/o'chirish kerak bo'lganda.

### Comparator nima? Obyektlarni tashqi (custom) mezon bo'yicha solishtirish uchun interface (`compare(a,b)`) — bir necha xil saralash imkonini beradi.

### Comparable nima? Obyektning o'zida tabiiy (natural) tartibni belgilovchi interface (`compareTo(o)`).

### Comparator va Comparable interfacelari farqi? Comparable — class ichida, bitta tabiiy tartib (`compareTo`). Comparator — tashqarida, ko'p xil tartib (`compare`), class kodini o'zgartirmaydi.

### Comparator/Comparable Java-ning nechinchi versiyasida qo'shilgan? Ikkalasi ham Java 2 (JDK 1.2) dan.

### Qachon bu 2 interfaceni ishlatamiz? Bitta tabiiy tartib uchun — Comparable; bir nechta yoki tashqi tartib uchun — Comparator.

### TreeSet nima? Red-Black tree asosidagi, elementlarni saralangan (sorted) holda saqlaydigan Set.

### TreeSet duplicate elementlarga ruxsat bormi? Yo'q.

### TreeSet thread-safe mi? Yo'q.

### TreeSet va HashSet o'rtasidagi farq? TreeSet saralangan (Comparable/Comparator), O(log n), null saqlamaydi. HashSet tartibsiz, O(1), 1 null ga ruxsat.

### TreeSet hierarchysini ayting. `TreeSet` → `NavigableSet` → `SortedSet` → `Set` → `Collection`.

### TreeSet elementlarni saqlash uchun internal nimadan foydalanadi? `TreeMap` (Red-Black tree).

### TreeSetga iteratsiya paytida o'zgartirish kiritsak nima bo'ladi? Fail-fast — `ConcurrentModificationException` tashlanadi.

## 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 names = new java.util.TreeSet<String>(
  java.util.Comparator.comparingInt(String::length).thenComparing(s -> s));
names.addAll(java.util.List.of("Ali", "Vali", "Aziz", "Ali"));
System.out.println(names);

Keng tarqalgan xatolar

Mashqlar

Teglar: nazariya, modul-03, pdp

Interaktiv ko'rinish (viktorina, izohlar, tarix)