जावा लैम्ब्डा एक्सप्रेशंस
जावा लैम्ब्डा एक्सप्रेशंस
जावा 8 में लैम्ब्डा एक्सप्रेशंस जोड़े गए थे।
लैम्ब्डा एक्सप्रेशन कोड का एक छोटा ब्लॉक है जो पैरामीटर लेता है और एक मान देता है। लैम्ब्डा एक्सप्रेशन विधियों के समान हैं, लेकिन उन्हें किसी नाम की आवश्यकता नहीं है और उन्हें एक विधि के शरीर में सही तरीके से लागू किया जा सकता है।
वाक्य - विन्यास
सबसे सरल लैम्ब्डा अभिव्यक्ति में एक पैरामीटर और एक अभिव्यक्ति होती है:
parameter -> expression
एक से अधिक पैरामीटर का उपयोग करने के लिए, उन्हें कोष्ठक में लपेटें:
(parameter1, parameter2) -> expression
अभिव्यक्ति सीमित हैं। उन्हें तुरंत एक मान वापस करना होता है, और उनमें वेरिएबल, असाइनमेंट या स्टेटमेंट जैसे या नहीं हो सकते if
हैं for
। अधिक जटिल संचालन करने के लिए, घुंघराले ब्रेसिज़ के साथ एक कोड ब्लॉक का उपयोग किया जा सकता है। यदि लैम्ब्डा एक्सप्रेशन को एक मान वापस करने की आवश्यकता है, तो कोड ब्लॉक में एक return
स्टेटमेंट होना चाहिए।
(parameter1, parameter2) -> { code block }
लैम्ब्डा एक्सप्रेशंस का उपयोग करना
लैम्ब्डा अभिव्यक्ति आमतौर पर किसी फ़ंक्शन के पैरामीटर के रूप में पारित की जाती है:
उदाहरण
सूची में प्रत्येक आइटम को प्रिंट करने के लिए ArrayList
लैंबा एक्सप्रेशन का उपयोग करें :forEach()
import java.util.ArrayList;
public class Main {
public static void main(String[] args) {
ArrayList<Integer> numbers = new ArrayList<Integer>();
numbers.add(5);
numbers.add(9);
numbers.add(8);
numbers.add(1);
numbers.forEach( (n) -> { System.out.println(n); } );
}
}
लैम्ब्डा अभिव्यक्तियों को चर में संग्रहीत किया जा सकता है यदि चर का प्रकार एक इंटरफ़ेस है जिसमें केवल एक विधि है। लैम्ब्डा अभिव्यक्ति में समान संख्या में पैरामीटर और उस विधि के समान रिटर्न प्रकार होना चाहिए। जावा में इन प्रकार के कई इंटरफेस अंतर्निहित हैं, जैसे कि Consumer
इंटरफ़ेस ( java.util
पैकेज में पाया गया) सूचियों द्वारा उपयोग किया जाता है।
उदाहरण
Consumer
एक चर में लैम्ब्डा अभिव्यक्ति को संग्रहीत करने के लिए जावा के इंटरफ़ेस का उपयोग करें :
import java.util.ArrayList;
import java.util.function.Consumer;
public class Main {
public static void main(String[] args) {
ArrayList<Integer> numbers = new ArrayList<Integer>();
numbers.add(5);
numbers.add(9);
numbers.add(8);
numbers.add(1);
Consumer<Integer> method = (n) -> { System.out.println(n); };
numbers.forEach( method );
}
}
एक विधि में लैम्ब्डा अभिव्यक्ति का उपयोग करने के लिए, विधि में एक एकल-विधि इंटरफ़ेस के साथ इसके प्रकार के रूप में एक पैरामीटर होना चाहिए। इंटरफ़ेस की विधि को कॉल करने से लैम्ब्डा एक्सप्रेशन चलेगा:
उदाहरण
एक विधि बनाएं जो एक लैम्ब्डा अभिव्यक्ति को एक पैरामीटर के रूप में लेती है:
interface StringFunction { String run(String str);
}public class Main { public static void main(String[] args) { StringFunction exclaim = (s) -> s + "!"; StringFunction ask = (s) -> s + "?"; printFormatted("Hello", exclaim); printFormatted("Hello", ask);
}public static void printFormatted(String str, StringFunction format) { String result = format.run(str); System.out.println(result);
}}