Junior
Javaда лямбда билдирүүлөрү эмне?
sobes.tech AI
AIден жооп
Лямбда-экспрессия — бул анонимдүү функция үчүн кыска форма, ал функционалдык интерфейс ыкмаларын ишке ашырат.
Түзүмү: (параметрлер) -> { билдирүүнүн денеси }.
| Бөлүк | Түшүндүрмө | Мисалдар |
|---|---|---|
параметрлер |
Параметрлердин тизмеси, бош болушу мүмкүн. Типтери көрсөтүлбөйт (чыгарылат). | ()<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("Лямбда экспрессиясы"); -
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); // Жуп сандарды фильтрлөө лямбда менен 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]
Артыкчылыктары:
- Кодду кыскаратат анонимдүү класстарга салыштырмалуу
- Жөнөкөй операциялар үчүн окумдуулугун жогорулатат
- Streams API жана башка APIлер менен колдонууга ыңгайлуу, функционалдык программалоого багытталган.