Junior
Šta su lambda izrazi u Javi?
sobes.tech АИ
Одговор од АИ
Ламбда израз је кратак облик за анонимску функцију, која реализује методе функционалног интерфејса.
Структура: (параметри) -> { тело израза }.
| Чланак | Опис | Примери |
|---|---|---|
параметри |
Листа параметара, може бити празан. Типови могу бити нејасни (изведени). | ()<br>x<br>(x, y)<br>(int x, String y) |
-> |
Оператор стрелице (arrow operator). Делује као раздвајач између параметара и тела. | -> |
тело израза |
Тело ламбда израза. Може бити израз или блок кода. | x * x<br>{ System.out.println(x); } |
Примери употребе:
-
Реализација функционалних интерфејса:
import java.util.function.Consumer; // Пре традиционалне реализације анонимног класа Consumer<String> consumerAnon = new Consumer<String>() { @Override public void accept(String s) { System.out.println(s); } }; consumerAnon.accept("Традиционална анонимна класа"); // Са коришћењем ламбда израза Consumer<String> consumerLambda = s -> System.out.println(s); consumerLambda.accept("Ламбда израз"); -
Рад са API-јем Streams:
import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5); // Филтрирање парних бројева са ламбда List<Integer> evenNumbers = numbers.stream() .filter(n -> n % 2 == 0) .collect(Collectors.toList()); System.out.println(evenNumbers); // Излаз: [2, 4] // Претварање бројева у њихове квадрате List<Integer> squares = numbers.stream() .map(n -> n * n) .collect(Collectors.toList()); System.out.println(squares); // Излаз: [1, 4, 9, 16, 25]
Предности:
- Скратити код у поређењу са анонимним класама.
- Повећати читљивост за једноставне операције.
- Удобност коришћења са API-јем као што је Streams и другим API-јем оријентисаним на функционално програмирање.