Function और BiFunction
फ़ंक्शनल तरीके से मानों को बदलें
Function और BiFunction, CoddyKit पर Java Academy का एक निःशुल्क पाठ है। यह 4 में से 1वाँ पाठ है। आप नीचे पूरा पाठ निःशुल्क पढ़ सकते हैं—फिर अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर के साथ ब्राउज़र में इसका व्यावहारिक अभ्यास कर सकते हैं। यह Java Academy सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। Java Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
Function क्या दर्शाता है
Function<T, R> java.util.function का मुख्य रूपांतरण इंटरफ़ेस है। यह T प्रकार का एक तर्क लेता है और R प्रकार का परिणाम लौटाता है।
- इसकी एकमात्र अमूर्त विधि
R apply(T t)है। - यह इनपुट से आउटपुट तक के शुद्ध मान-रूपांतरण को दर्शाता है।
import java.util.function.Function;
public class Main {
public static void main(String[] args) {
Function<String, Integer> length = s -> s.length();
System.out.println(length.apply("hello"));
}
}apply को बुलाना
आप apply को बुलाकर Function का उपयोग करते हैं। लैम्ब्डा का मुख्य भाग रूपांतरण का तर्क होता है।
- इनपुट और आउटपुट के प्रकार अलग-अलग हो सकते हैं।
String::toUpperCaseजैसे विधि-संदर्भ से लैम्ब्डा को बदला जा सकता है।
import java.util.function.Function;
public class Main {
public static void main(String[] args) {
Function<String, String> upper = String::toUpperCase;
System.out.println(upper.apply("java"));
}
}andThen संयोजन
andThen फ़ंक्शनों को क्रम से जोड़ता है: पहले का परिणाम दूसरे का इनपुट बन जाता है।
f.andThen(g)का अर्थ g(f(x)) है।- इसे बाएँ से दाएँ पढ़ा जाता है।
import java.util.function.Function;
public class Main {
public static void main(String[] args) {
Function<Integer, Integer> times2 = n -> n * 2;
Function<Integer, Integer> plus3 = n -> n + 3;
System.out.println(times2.andThen(plus3).apply(5));
}
}compose संयोजन
compose में तर्क वाला फ़ंक्शन पहले चलता है।
f.compose(g)का अर्थ f(g(x)) है।- यह
andThenका उलटा रूप है।
import java.util.function.Function;
public class Main {
public static void main(String[] args) {
Function<Integer, Integer> times2 = n -> n * 2;
Function<Integer, Integer> plus3 = n -> n + 3;
System.out.println(times2.compose(plus3).apply(5));
}
}Function.identity
Function.identity() ऐसा फ़ंक्शन लौटाता है जो अपने इनपुट को बिना बदले वापस देता है।
- यह स्ट्रीम संग्राहकों और डिफ़ॉल्ट मान-रूपांतरणों में उपयोगी है।
- यह
x -> xके समतुल्य है।
import java.util.function.Function;
public class Main {
public static void main(String[] args) {
Function<String, String> id = Function.identity();
System.out.println(id.apply("unchanged"));
}
}BiFunction से परिचय
BiFunction<T, U, R> दो तर्क लेता है और एक परिणाम लौटाता है।
- इसकी विधि
R apply(T t, U u)है। - यह दो मानों को मिलाने, जैसे मानचित्रों को मर्ज करने, के लिए उपयोगी है।
import java.util.function.BiFunction;
public class Main {
public static void main(String[] args) {
BiFunction<Integer, Integer, Integer> add = (a, b) -> a + b;
System.out.println(add.apply(4, 6));
}
}अलग-अलग प्रकारों वाला BiFunction
BiFunction के तीनों प्रकार-पैरामीटर अलग-अलग हो सकते हैं।
- यहाँ हम एक
Stringऔर एकintको एकStringमें मिलाते हैं।
import java.util.function.BiFunction;
public class Main {
public static void main(String[] args) {
BiFunction<String, Integer, String> repeat = (s, n) -> s.repeat(n);
System.out.println(repeat.apply("ab", 3));
}
}BiFunction और andThen
BiFunction भी andThen का समर्थन करता है। यह परिणाम पर आगे की प्रक्रिया करने के लिए एक-तर्क वाला Function लेता है।
BiFunctionमेंcomposeनहीं है, क्योंकि इसके लिए दो इनपुट की आवश्यकता होती।
import java.util.function.BiFunction;
import java.util.function.Function;
public class Main {
public static void main(String[] args) {
BiFunction<Integer, Integer, Integer> add = (a, b) -> a + b;
Function<Integer, String> label = n -> "sum=" + n;
System.out.println(add.andThen(label).apply(7, 8));
}
}संग्रहों में फ़ंक्शन
कई एपीआई Function स्वीकार करते हैं। उदाहरण के लिए, Map.computeIfAbsent अनुपस्थित कुंजियों के लिए मान-रूपांतरण फ़ंक्शन लेता है।
import java.util.HashMap;
import java.util.Map;
public class Main {
public static void main(String[] args) {
Map<String, Integer> lengths = new HashMap<>();
lengths.computeIfAbsent("hello", String::length);
System.out.println(lengths);
}
}चरों में फ़ंक्शन रखना
फ़ंक्शन ऑब्जेक्ट होने के कारण आप उन्हें रख सकते हैं, आगे भेज सकते हैं और वापस कर सकते हैं। यही कार्यात्मक शैली वाले Java का आधार है।
import java.util.function.Function;
public class Main {
public static void main(String[] args) {
Function<Integer, Integer> square = n -> n * n;
Function<Integer, Integer> cube = n -> n * n * n;
Function<Integer, Integer> chosen = square;
System.out.println(chosen.apply(5));
}
}रूपांतरण-श्रृंखला बनाना
andThen को बार-बार जोड़ने से ऐसी रूपांतरण-श्रृंखला बनती है जिसे पढ़ना और दोबारा उपयोग करना आसान होता है।
import java.util.function.Function;
public class Main {
public static void main(String[] args) {
Function<String, String> trim = String::trim;
Function<String, String> upper = String::toUpperCase;
Function<String, Integer> len = String::length;
System.out.println(trim.andThen(upper).andThen(len).apply(" abc "));
}
}त्वरित जाँच
f.andThen(g).apply(x) क्या निकालता है?
पुनरावृत्ति
आपने मुख्य रूपांतरण इंटरफ़ेस सीखे:
Function<T,R>applyसे एक मान का रूपांतरण करता है।andThenआगे की दिशा में जोड़ता है (g(f(x)));composeपीछे की दिशा में जोड़ता है (f(g(x))).Function.identity()अपना इनपुट वापस देता है।BiFunction<T,U,R>दो इनपुट सँभालता है औरandThenका समर्थन करता है, लेकिनcomposeका नहीं।
एआई शिक्षक के साथ Java सीखें — निःशुल्क
अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।
- पाठ्यक्रम
- 104
- पाठ
- 374
अक्सर पूछे जाने वाले प्रश्न
क्या “Function और BiFunction” पाठ निःशुल्क है?
हाँ—“Function और BiFunction” का पूरा पाठ यहाँ वेब पर निःशुल्क पढ़ा जा सकता है। इंटरैक्टिव अभ्यास (अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर) करने और Java Academy पाठ्यक्रम का बाकी हिस्सा अनलॉक करने के लिए CoddyKit PRO लें। Java Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
“Function और BiFunction” में मैं क्या सीखूँगा?
फ़ंक्शनल तरीके से मानों को बदलें आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ Java Academy का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।
क्या Java Academy शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?
पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर Java Academy शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 1वाँ पाठ है।
“Function और BiFunction” पाठ पूरा करने में कितना समय लगता है?
CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।
क्या मैं इस Java Academy पाठ में कोड लिख और चला सकता हूँ?
हाँ। हर Java Academy पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।
इस पाठ्यक्रम के सभी पाठ
- Function और BiFunction
- Supplier और Consumer
- Predicate और Composition
- कस्टम फ़ंक्शनल इंटरफ़ेस