"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > स्ट्रीम का उपयोग करके जावा में अधिकतम और न्यूनतम की गणना कैसे करें?

स्ट्रीम का उपयोग करके जावा में अधिकतम और न्यूनतम की गणना कैसे करें?

2024-11-18 को प्रकाशित
ब्राउज़ करें:301

¿Cómo calcular el máximo y mínimo en Java usando Streams?

इस पोस्ट में हम यह देखने जा रहे हैं कि तत्वों के संग्रह की अधिकतम और न्यूनतम गणना करने के लिए जावा स्ट्रीम एपीआई का उपयोग कैसे करें। ऐसा करने के लिए, हम स्ट्रीम क्लास की अधिकतम() और न्यूनतम() विधियों का उपयोग करने जा रहे हैं। ये विधियाँ हमें कस्टम तुलनित्र का उपयोग करके क्रमशः तत्वों के संग्रह का अधिकतम और न्यूनतम प्राप्त करने की अनुमति देती हैं।

मान लीजिए हमारे पास List प्रकार की एक सूची है जहां परीक्षा दो गुणों के नाम और ग्रेड के साथ एक रिकॉर्ड है, और हम उच्चतम ग्रेड और निम्नतम ग्रेड के साथ परीक्षा प्राप्त करना चाहते हैं।

public record Exam(String name, Double grade) { }
var exams = Arrays.asList(
        new Exam("Alice", 9.5),
        new Exam("Bob", 6.0),
        new Exam("Charlie", 7.5),
        new Exam("David", 8.0),
        new Exam("Eve", 8.5)
);

जावा के हाल के संस्करणों में आप एक कस्टम तुलनित्र पास करके और परिणाम के साथ एक वैकल्पिक प्राप्त करके इस उद्देश्य के लिए स्ट्रीम क्लास की अधिकतम() और न्यूनतम() विधियों का उपयोग कर सकते हैं। यदि जावा संस्करण अधिकतम() और न्यूनतम() विधियों का समर्थन नहीं करता है, तो संग्रह() विधि का उपयोग कलेक्टर को पैरामीटर के रूप में पास करने के लिए किया जा सकता है, या तो कलेक्टर्स.मैक्सबीवाई() या कलेक्टर्स.मिनबी(), और बदले में ए वैयक्तिकृत तुलनित्र. यदि आप जावा के नवीनतम संस्करण में इस अंतिम विकल्प का उपयोग करते हैं, तो आईडीई स्वयं इसे अधिकतम() या न्यूनतम() विधि में बदलने का सुझाव देगा।

आइए Comparator प्रकार का एक कस्टम तुलनित्र बनाकर शुरुआत करें जो हमें आरोही क्रम में ग्रेड प्राप्त करने की अनुमति देता है।

Comparator byGradeAsc = (e1, e2) -> (int) (e1.grade() - e2.grade());

उदाहरण के तौर पर, यदि पहली परीक्षा का ग्रेड दूसरे से कम है तो यह तुलनित्र एक नकारात्मक संख्या देगा, यदि वे बराबर हैं तो शून्य और यदि पहली परीक्षा का ग्रेड उससे अधिक है तो एक सकारात्मक संख्या देगा। दूसरा, अधिक जानकारी के लिए आप एक पोस्ट के इस लिंक से परामर्श ले सकते हैं जो बताता है कि तुलनित्र इंटरफ़ेस कैसे काम करता है।

इस तुलनित्र को तुलनित्र वर्ग की CompareDouble() विधि का उपयोग करके दूसरे तरीके से परिभाषित किया जा सकता है जो हमें एक फ़ंक्शन से एक तुलनित्र बनाने की अनुमति देता है जो तुलनित्र को मैन्युअल रूप से लिखने की आवश्यकता के बिना किसी ऑब्जेक्ट से दोगुना मान निकालता है।

Comparator byGradeAscClean = Comparator.comparingDouble(Exam::grade);

इस परिभाषा में तुलनित्र को बताया गया है कि उसे परीक्षा प्रकार का एक ऑब्जेक्ट लेना होगा, ग्रेड संपत्ति का मूल्य निकालना होगा और डबल डेटा प्रकार का उपयोग करके मूल्यों की तुलना करनी होगी।

ये दोनों तरीके समतुल्य हैं और इन्हें परस्पर उपयोग किया जा सकता है, दूसरे को पहले समझना थोड़ा मुश्किल हो सकता है, लेकिन एक बार जब आप इसे समझ लेते हैं तो इसे लिखना और पढ़ना आसान हो जाता है।

अब जब आपके पास तुलनित्र है, तो केवल उच्चतम और न्यूनतम स्कोर के साथ परीक्षा प्राप्त करने के लिए इसे अधिकतम() और न्यूनतम() तरीकों में उपयोग करना बाकी है।

var highestGrade = exams.stream().max(byGradeAscClean);
var lowestGrade = exams.stream().min(byGradeAscClean);

इस मामले में, एक वैकल्पिक क्रमशः उच्चतम और निम्नतम स्कोर वाली परीक्षा से प्राप्त की जाती है। यदि परीक्षा सूची खाली है, तो एक Optional.empty() लौटाया जाएगा। वैकल्पिक का मान प्राप्त करने के लिए आप ifPresent() विधि का उपयोग कर सकते हैं जो एक उपभोक्ता को प्राप्त करता है और यदि कोई मान मौजूद है तो उसे दिए गए कोड को एक तर्क के रूप में निष्पादित करता है।

highestGrade.ifPresent(ex -> System.out.println("Highest grade: "   ex.name()   " "   ex.grade()));
lowestGrade.ifPresent(ex -> System.out.println("Lowest grade: "   ex.name()   " "   ex.grade()));

// Output
Highest grade: Alice 9.5
Lowest grade: Bob 6.0

या वैकल्पिक के मान को मुद्रित करने के लिए एक संदर्भ विधि को एक तर्क के रूप में पास करें, यदि वैकल्पिक खाली है तो कुछ भी मुद्रित नहीं किया जाएगा, अन्यथा वैकल्पिक का मान परीक्षा ऑब्जेक्ट की toString() विधि को कॉल करके मुद्रित किया जाएगा। .

highestGrade.ifPresent(System.out::println);
lowestGrade.ifPresent(System.out::println);

// Output
Exam[name=Alice, grade=9.5]
Exam[name=Bob, grade=6.0]

वहां, इस तरह आप जावा स्ट्रीम एपीआई और तुलनित्र इंटरफ़ेस का उपयोग करके तत्वों का अधिकतम और न्यूनतम संग्रह प्राप्त कर सकते हैं।

विज्ञप्ति वक्तव्य यह आलेख यहां पुन: प्रस्तुत किया गया है: https://dev.to/asgordi/como-calculular-el-maximo-y-minimo-en-java-usando-streams-2fca?1 यदि कोई उल्लंघन है, तो कृपया स्टडी_गोलंग@163 से संपर्क करें इसे हटाने के लिए .com
नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3