Junior
Kas yra lambda išraiškos Java?
sobes.tech AI
Atsakymas iš AI
Lambdų išraiška — tai trumpa forma anoniminės funkcijos, kuri įgyvendina funkcinio interfeiso metodus.
Struktūra: (parametrai) -> { išraiškos kūnas }.
| Dalis | Aprašymas | Pavyzdžiai |
|---|---|---|
parametrai |
Parametrų sąrašas, gali būti tuščias. Tipai gali būti nenurodyti (išvedami). | ()<br>x<br>(x, y)<br>(int x, String y) |
-> |
Strėlės operatorius (arrow operator). Skiria parametrus nuo kūno. | -> |
išraiškos kūnas |
Lambdo kūnas. Gali būti išraiška arba kodo blokas. | x * x<br>{ System.out.println(x); } |
Naudojimo pavyzdžiai:
-
Funkcinių interfeisų įgyvendinimas:
import java.util.function.Consumer; // Iki tradicinės anoniminių klasių įgyvendinimo Consumer<String> consumerAnon = new Consumer<String>() { @Override public void accept(String s) { System.out.println(s); } }; consumerAnon.accept("Tradicinė anoniminių klasių realizacija"); // Naudojant lambda išraišką Consumer<String> consumerLambda = s -> System.out.println(s); consumerLambda.accept("Lambda išraiška"); -
Darbas su Streams API:
import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5); // Porinių skaičių filtravimas su lambda List<Integer> evenNumbers = numbers.stream() .filter(n -> n % 2 == 0) .collect(Collectors.toList()); System.out.println(evenNumbers); // Išvestis: [2, 4] // Skaičių pavertimas jų kvadratais List<Integer> squares = numbers.stream() .map(n -> n * n) .collect(Collectors.toList()); System.out.println(squares); // Išvestis: [1, 4, 9, 16, 25]
Privalumai:
- Sutrumpina kodą lyginant su anoniminių klasių naudojimu.
- Pagerina skaitomumą paprastoms operacijoms.
- Patogu naudoti su Streams API ir kitais API, orientuotais į funkcionalų programavimą.