Lambda Expressions
Lambda क्या है
Lambda expression एक छोटा, बिना नाम function है जिसे आप value के रूप में इधर-उधर भेज सकते हैं। Java 8 में लाया, यह arrow -> इस्तेमाल करता है और आपको behaviour compact लिखने देता है — पूरी classes लिखे बिना sorting, looping और event handling को बढ़िया।
(parameters) -> body।Lambda syntax
// (parameters) -> body
(x) -> x * 2 // एक parameter
(a, b) -> a + b // दो parameters
() -> System.out.println("Hi") // कोई parameter नहीं
x -> { // block body
int y = x + 1;
return y;
}
बायाँ हिस्सा parameters list करता है, arrow अलग करता है, और दायाँ हिस्सा body है। एकल expressions अपने-आप return होते हैं; { } block return इस्तेमाल करता है।
Functional interfaces
interface Greeter {
void greet(String name); // एक abstract method
}
// lambda वो method देता है:
Greeter g = name -> System.out.println("Hi " + name);
g.greet("Aman");
Lambda functional interface के साथ काम करता है — ठीक एक abstract method वाला interface। Lambda उस method का implementation बन जाता है, कोई class नहीं चाहिए।
Lists के साथ lambdas
import java.util.ArrayList; ArrayList<Integer> nums = new ArrayList<>(); nums.add(3); nums.add(1); nums.add(2); nums.forEach(n -> System.out.println(n)); // हर एक print nums.sort((a, b) -> a - b); // ascending sort System.out.println(nums);
1
2
[1, 2, 3]
Lambdas collections के साथ चमकते हैं: forEach हर item पर चलाने को lambda लेता है, और sort order को lambda लेता है। पुराने loops या classes से बहुत छोटा।
Built-in functional interfaces
- Runnable —
() -> { ... }, चलाने को code। - Comparator —
(a, b) -> ..., sorting को। - Predicate —
x -> boolean, एक test। - Function —
x -> result, एक transform।
Java java.util.function में कई तैयार functional interfaces देती है, तो आप शायद ही अपना define करते हैं।
Method references
// lambda: nums.forEach(n -> System.out.println(n)); // method reference (छोटा): nums.forEach(System.out::println);
2
3
जब lambda सिर्फ़ एक मौजूदा method call करे, आप उसे :: इस्तेमाल करके method reference से बदल सकते हैं। यह सबसे compact रूप है और साफ़ पढ़ा जाता है।
आम गलतियाँ
- Non-functional interface पर lambda इस्तेमाल करना। इसमें ठीक एक abstract method होनी चाहिए।
- Block body में
returnभूलना। एकल expressions अपने-आप return होते हैं;{ }blocks नहीं। - Lambdas को ज़्यादा जटिल बनाना। लंबी logic को named method साफ़ है।
- गलत parameter गिनती। यह interface की इकलौती method से मेल खानी चाहिए।
सारांश
- Lambda एक छोटा, बिना नाम function है:
(params) -> body। - यह functional interface (एक abstract method) के साथ काम करता है।
- Lambdas collection code (forEach, sort) को संक्षिप्त बनाते हैं।
- Java Predicate और Function जैसे तैयार functional interfaces देती है।
- Method references (
::) और छोटा रूप हैं।
आगे, data process कीजिए Stream API से, या sort कीजिए Comparator से।
अक्सर पूछे जाने वाले प्रश्न (FAQ)
Java में lambda expression क्या है?
-> syntax इस्तेमाल करके। जैसे (x) -> x * 2। यह आपको behaviour को value के रूप में भेजने देता है, code को छोटा और साफ़ बनाकर।Functional interface क्या है?
Lambdas Java में कब जोड़े गए?
Method reference क्या है?
:: से लिखा, जैसे System.out::println। यह तब इस्तेमाल होता है जब lambda सिर्फ़ एक method call करे।