Junior
Mi a lambda kifejezések Java-ban?
sobes.tech MI
Válasz az MI-től
A lambda kifejezés egy tömör forma a névtelen függvény, amely megvalósítja egy funkcionális interfész metódusait.
Felépítés: (paraméterek) -> { kifejezés törzse }.
| Rész | Leírás | Példák |
|---|---|---|
paraméterek |
Paraméterek listája, lehet üres. A típusokat nem kell megadni (kitalálja a fordító). | ()<br>x<br>(x, y)<br>(int x, String y) |
-> |
Nyíl operátor (arrow operator). Elválasztja a paramétereket a törzstől. | -> |
kifejezés törzse |
Lambda törzse. Lehet egy kifejezés vagy kódrészlet blokk. | x * x<br>{ System.out.println(x); } |
Használati példák:
-
Funkcionális interfészek megvalósítása:
import java.util.function.Consumer; // Korábban, hagyományos megvalósítás anonim osztállyal Consumer<String> consumerAnon = new Consumer<String>() { @Override public void accept(String s) { System.out.println(s); } }; consumerAnon.accept("Hagyományos anonim osztály"); // Lambda kifejezéssel Consumer<String> consumerLambda = s -> System.out.println(s); consumerLambda.accept("Lambda kifejezés"); -
A Streams API-val való munka:
import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5); // Páros számok szűrése lambda-val List<Integer> evenNumbers = numbers.stream() .filter(n -> n % 2 == 0) .collect(Collectors.toList()); System.out.println(evenNumbers); // Kimenet: [2, 4] // Számok négyzetre emelése List<Integer> squares = numbers.stream() .map(n -> n * n) .collect(Collectors.toList()); System.out.println(squares); // Kimenet: [1, 4, 9, 16, 25]
Előnyök:
- Rövidebb kód, mint az anonim osztályok esetén.
- Könnyebben olvasható, különösen egyszerű műveleteknél.
- Egyszerűbb használat a Streams API-val és más funkcionális programozási API-kkal.