5-modul · 6-dars: Behavior Parameterization · Lambda

Daraja: O'rta

Behavior Parameterization · Lambda. Java kutubxonalari va Stream bo‘yicha nazariya, amaliy namuna va mustaqil mashq.

Tushuntirish

## Dars maqsadi Behavior Parameterization · Lambda tushunchalarini farqlash, nima uchun kerakligini izohlash va kichik misolda qo‘llash.

## Nazariya Metodga ma'lumot emas, xatti-harakat (kod/funksiya) ni parametr sifatida uzatish — turli mantiqni bir metodga moslashuvchan berish.

Takroriy, o'xshash kodni (har xil filtr uchun alohida metod yozish kabi) bartaraf etadi; kodni moslashuvchan va o'zgarishga chidamli qiladi.

## Intervyuga tayyorgarlik ### Behaviour parametrization nima? Metodga ma'lumot emas, xatti-harakat (kod/funksiya) ni parametr sifatida uzatish — turli mantiqni bir metodga moslashuvchan berish.

### Behaviour parametrization qanday muammolarni hal qiladi? Takroriy, o'xshash kodni (har xil filtr uchun alohida metod yozish kabi) bartaraf etadi; kodni moslashuvchan va o'zgarishga chidamli qiladi.

### Lambda expression nima? Nomsiz (anonim) funksiya — `(parametrlar) -> tana` ko'rinishida qisqa yoziladi; functional interface ni amalga oshiradi.

### Lambda expression larda qanday qoidalar mavjud? Faqat functional (bitta abstract methodli) interface uchun ishlaydi; parametr turlari yozilmasligi mumkin (inference); bitta ifoda bo'lsa `{}` va `return` shart emas; tashqi o'zgaruvchilar effectively final bo'lishi kerak.

### Final va Effectively final o'zgaruvchilar farqi? `final` — aniq final deb e'lon qilingan. Effectively final — `final` yozilmagan, lekin bir marta qiymat berilib keyin o'zgartirilmagan o'zgaruvchi. Lambda ikkalasini ham ishlata oladi.

### Qayerlarda Lambda-ni ishlatgan to'g'ri bo'ladi? Functional interface kutilgan joyda: collection amallari (`forEach`, `filter`, `map`), Comparator, event handler, `Runnable` va qisqa bir martalik xatti-harakatlarda.

## 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 names = new java.util.ArrayList<>(java.util.List.of("Ali", "Vali", "Aziz"));
names.removeIf(name -> name.startsWith("A"));
System.out.println(names); // [Vali]

Keng tarqalgan xatolar

Mashqlar

Teglar: nazariya, pdp, modul-05

Interaktiv ko'rinish (viktorina, izohlar, tarix)