Junior
Ифодаҳои lambda дар 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("Ифодаи лямбда"); -
Кор бо 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-и дигар, ки ба барномасозии функсионалӣ нигаронида шудаанд.