इस पोस्ट में हम यह देखने जा रहे हैं कि तत्वों के संग्रह की अधिकतम और न्यूनतम गणना करने के लिए जावा स्ट्रीम एपीआई का उपयोग कैसे करें। ऐसा करने के लिए, हम स्ट्रीम क्लास की अधिकतम() और न्यूनतम() विधियों का उपयोग करने जा रहे हैं। ये विधियाँ हमें कस्टम तुलनित्र का उपयोग करके क्रमशः तत्वों के संग्रह का अधिकतम और न्यूनतम प्राप्त करने की अनुमति देती हैं।
मान लीजिए हमारे पास 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
ComparatorbyGradeAsc = (e1, e2) -> (int) (e1.grade() - e2.grade());
उदाहरण के तौर पर, यदि पहली परीक्षा का ग्रेड दूसरे से कम है तो यह तुलनित्र एक नकारात्मक संख्या देगा, यदि वे बराबर हैं तो शून्य और यदि पहली परीक्षा का ग्रेड उससे अधिक है तो एक सकारात्मक संख्या देगा। दूसरा, अधिक जानकारी के लिए आप एक पोस्ट के इस लिंक से परामर्श ले सकते हैं जो बताता है कि तुलनित्र इंटरफ़ेस कैसे काम करता है।
इस तुलनित्र को तुलनित्र वर्ग की CompareDouble() विधि का उपयोग करके दूसरे तरीके से परिभाषित किया जा सकता है जो हमें एक फ़ंक्शन से एक तुलनित्र बनाने की अनुमति देता है जो तुलनित्र को मैन्युअल रूप से लिखने की आवश्यकता के बिना किसी ऑब्जेक्ट से दोगुना मान निकालता है।
ComparatorbyGradeAscClean = 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]
वहां, इस तरह आप जावा स्ट्रीम एपीआई और तुलनित्र इंटरफ़ेस का उपयोग करके तत्वों का अधिकतम और न्यूनतम संग्रह प्राप्त कर सकते हैं।
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3