Junior
Mis on lambda väljendid Java's?
sobes.tech AI
Vastus AI-lt
Lambda-väljendus on lühike vorm anonüümsele funktsioonile, mis rakendab funktsionaalset liidest meetodeid.
Struktuur: (parameetrid) -> { väljenduse keha }.
| Osa | Kirjeldus | Näited |
|---|---|---|
parameetrid |
Parameetrite nimekiri, võib olla tühi. Tüübid võivad olla määramata (välja näidatud). | ()<br>x<br>(x, y)<br>(int x, String y) |
-> |
Noole operaator (arrow operator). Eraldab parameetrid kehaosast. | -> |
väljenduse keha |
Lambdaväljendi keha. Võib olla väljend või koodiplokk. | x * x<br>{ System.out.println(x); } |
Kasutusnäited:
-
Funktsionaalsete liideste rakendamine:
import java.util.function.Consumer; // Enne traditsioonilist anonüümse klassi rakendust Consumer<String> consumerAnon = new Consumer<String>() { @Override public void accept(String s) { System.out.println(s); } }; consumerAnon.accept("Traditsiooniline anonüümne klass"); // Lambda väljendiga Consumer<String> consumerLambda = s -> System.out.println(s); consumerLambda.accept("Lambda väljend"); -
Töötamine Streams API-ga:
import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; List<Integer> arvud = Arrays.asList(1, 2, 3, 4, 5); // Paari arvude filtreerimine lambda-ga List<Integer> paarArvud = arvud.stream() .filter(n -> n % 2 == 0) .collect(Collectors.toList()); System.out.println(paarArvud); // Väljund: [2, 4] // Arvude muutmine nende ruutudeks List<Integer> ruudud = arvud.stream() .map(n -> n * n) .collect(Collectors.toList()); System.out.println(ruudud); // Väljund: [1, 4, 9, 16, 25]
Eelised:
- Kood lühem võrreldes anonüümsete klassidega.
- Loetavus lihtsate operatsioonide puhul suureneb.
- Mugav kasutada Streams API ja teisi API-sid, mis on suunatud funktsionaalsele programmeerimisele.