5-modul · 8-dars: Introduction to Streams

Daraja: O'rta

Introduction to Streams. Java kutubxonalari va Stream bo‘yicha nazariya, amaliy namuna va mustaqil mashq.

Tushuntirish

## Dars maqsadi Introduction to Streams tushunchalarini farqlash, nima uchun kerakligini izohlash va kichik misolda qo‘llash.

## Nazariya «Qanday» qilishni bosqichma-bosqich yozadigan uslub — loop, if bilan qadamlarni qo'lda boshqarish.

«Nima» kerakligini ifodalab, «qanday» bajarilishini tizimga qoldiradigan uslub (masalan Stream API).

## Intervyuga tayyorgarlik ### Imperative Coding nima? «Qanday» qilishni bosqichma-bosqich yozadigan uslub — loop, if bilan qadamlarni qo'lda boshqarish.

### Declarative Coding nima? «Nima» kerakligini ifodalab, «qanday» bajarilishini tizimga qoldiradigan uslub (masalan Stream API).

### Declarative Coding-ga misollar? Stream API (`filter`, `map`, `collect`), SQL so'rovlari, funksional dasturlash uslubidagi kod.

### Stream nima? Ma'lumotlar ketma-ketligi ustida funksional (deklarativ) amallar bajarish uchun oqim; manbani o'zgartirmaydi va saqlamaydi.

### Stream API nima? Java 8 dagi (`java.util.stream`) collection/massiv ma'lumotlarini deklarativ qayta ishlash (filter, map, reduce) uchun API.

### Streamlarning Collection-lardan farqi nima? Collection — ma'lumotni saqlaydi. Stream — saqlamaydi, qayta ishlash uchun oqim; bir marta ishlatiladi, dangasa (lazy) va manbani o'zgartirmaydi.

### Stream yaratish usullari? `collection.stream()`, `Arrays.stream(arr)`, `Stream.of(...)`, `Stream.iterate/generate`, `IntStream.range`, `Files.lines`, `String.chars`.

### Qanday Stream Operatorlari mavjud? 2 turi: Intermediate (oraliq — Stream qaytaradi) va Terminal (yakuniy — natija/side-effect qaytaradi).

### Intermediate Operatorlar qanday operatorlar? Streamni o'zgartirib yangi Stream qaytaradi; dangasa (lazy) — terminal chaqirilmaguncha ishlamaydi (`filter`, `map`, `sorted`, `distinct`, `limit`).

### Terminal Operatorlar qanday operatorlar? Streamni yakunlab, natija yoki side-effect qaytaradi va oqimni «iste'mol qiladi» (`collect`, `forEach`, `reduce`, `count`, `findFirst`).

### Intermediate Operatorlar necha turga bo'linadi? 2 turga: Stateless va Stateful.

### Stateless operatorlar qanday operatorlar? Har elementni oldingi elementlardan mustaqil, holat saqlamasdan qayta ishlaydi (`filter`, `map`).

### Stateful operatorlar qanday operatorlar? Ishlash uchun oldingi elementlar holatini yoki butun oqimni bilishi kerak (`sorted`, `distinct`, `limit`).

## 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.

Manbadagi 17 dars oldingi o‘quv arxividagi 10 guruhga birlashtirilgan: Lombok/Faker va Stream/Collectors hamda HttpClient/Gson/Reflection/Annotations birgalikda o‘rganiladi.

## Manbalar [Moduldagi savollar yo‘nalishi](https://github.com/jlkesh/pdp_online_java_lessons/blob/main/interviewquestions/5-module.md) [Rasmiy qo‘llanma](https://dev.java/learn/) [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 stream = java.util.List.of(1, 2, 3, 4).stream()
  .filter(n -> n % 2 == 0).map(n -> n * n);
System.out.println(stream.toList()); // [4, 16]
// Stream terminal amaldan keyin qayta ishlatilmaydi.

Keng tarqalgan xatolar

Mashqlar

Teglar: nazariya, modul-05, pdp

Interaktiv ko'rinish (viktorina, izohlar, tarix)