Middle
Javaда лямбда-экспрессиялар эмне жана алар кандай мүмкүнчүлүктөрдү камсыздайт?
sobes.tech AI
AIден жооп
Javaда лямбда-экспрессия — бул анонимдүү функция, ал эч кандай класска таандык эмес жана объект катары өткөрүлүшү мүмкүн.
Синтаксиси: (параметрлер) -> { дене }
Мүмкүнчүлүктөрү:
- Функционалдык интерфейс: Лямбда-экспрессия функционалдык интерфейс түрүнө (бир абстракттуу методу бар интерфейс) белгилениши мүмкүн.
// Функционалдык интерфейс @FunctionalInterface интерфейс MyInterface { void myMethod(); } // Лямбда-экспрессияны колдонуу MyInterface lambda = () -> System.out.println("Hello from lambda!"); lambda.myMethod(); - Кодду жөнөкөйлөтүү: Анонимдүү ички класстарды функционалдык интерфейстерди ишке ашыруу үчүн алмаштырат.
// Java 8ге чейин (анонимдүү класс) Thread thread1 = new Thread(new Runnable() { @Override public void run() { System.out.println("Old way"); } }); // Java 8ден кийин (лямбда) Thread thread2 = new Thread(() -> System.out.println("Lambda way")); - Stream APIде колдонуу: Stream API менен интеграцияланып, коллекциялар боюнча операцияларды аткаруу.
List<String> names = Arrays.asList("Alice", "Bob", "Charlie"); names.stream() .filter(name -> name.startsWith("A")) // Лямбда-экспрессия .forEach(System.out::println); // Лямбда-экспрессия (метод-ссылка) - Кечиктирилген ишке ашыруу: Лямбда-экспрессиянын ичинде код функционалдуу метод чакырылганда гана ишке ашырылат.
- Көрүнүү чөйрөлөрү: Лямбда-экспрессиялар сырткы чөйрөдөн өзгөрмөлөрдү алууга мүмкүнчүлүк берет (жергиликтүү өзгөрмөлөр финалдуу же effectively final болушу керек).
| Артыкчылык | Description |
|---|---|
| Коддун кыска болушу | Анонимдүү класстарга салыштырмалуу "көп сөздүүлүктү" азайтат. |
| Окууга жеңилдик | Кодду кыска жана түшүнүктүү кылат. |
| Параллелдүү иштетүү | Stream API аркылуу параллелдүү операцияларды колдойт. |