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

जावा 8 लैम्ब्डा का उपयोग करके कुशलतापूर्वक एकाधिक फ़ील्ड्स के आधार पर संग्रहों को कैसे क्रमबद्ध करें?

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

How to Sort Collections by Multiple Fields Efficiently Using Java 8 Lambda\'s?

जावा 8 लैम्ब्डा का उपयोग करके एकाधिक फ़ील्ड वाले संग्रहों को सॉर्ट करना

प्रदान किया गया सॉर्टिंग कोड अधूरा प्रतीत होता है और अपेक्षित क्रमबद्ध क्रम उत्पन्न नहीं कर सकता है। आइए जावा 8 लैम्ब्डा का उपयोग करके एक अधिक कुशल और व्यापक दृष्टिकोण में गोता लगाएँ। कोड. निम्नलिखित पर विचार करें:

Collections.sort(reportList, Comparator.comparing(Report::getReportKey) .thenComparing(रिपोर्ट::getStudentNumber) .thenComparing(Report::getSchool));

यह लैम्ब्डा-आधारित दृष्टिकोण तुलना प्रक्रिया को अनुक्रमित करता है, .thenComparing() विधि द्वारा परिभाषित प्राथमिकता के क्रम में निर्दिष्ट फ़ील्ड के आधार पर सूची को प्रभावी ढंग से क्रमबद्ध करता है।
Collections.sort(reportList, Comparator.comparing(Report::getReportKey)
            .thenComparing(Report::getStudentNumber)
            .thenComparing(Report::getSchool));

आपके द्वारा प्रदान किया गया मूल कोड रिपोर्ट कुंजी, छात्र संख्या और स्कूल के लिए स्ट्रिंग को जोड़ता है:

रिटर्न (रिकॉर्ड1.getReportKey() रिकॉर्ड1 .getStudentNumber() रिकॉर्ड1.getSchool()) .compareTo(record2.getReportKey() रिकॉर्ड2.getStudentNumber() रिकॉर्ड2.getSchool());

इसके बजाय, उचित सॉर्टिंग के लिए, आपको फ़ील्ड की स्वतंत्र रूप से तुलना करनी चाहिए।
return (record1.getReportKey()   record1.getStudentNumber()   record1.getSchool())
        .compareTo(record2.getReportKey()   record2.getStudentNumber()   record2.getSchool());

लैम्ब्डा सिंटैक्स का उपयोग करके सॉर्ट फ़ंक्शन का एक उन्नत संस्करण यहां दिया गया है:

Collections.sort(रिपोर्टलिस्ट, (रिकॉर्ड1, रिकॉर्ड2) -> { int रिपोर्टKeyComparison = रिकॉर्ड1.getReportKey().compareTo(record2.getReportKey()); यदि (रिपोर्टकी तुलना != 0) { वापसी रिपोर्टकुंजीतुलना; } int studentNumberComparison = रिकार्ड1.getStudentNumber().compareTo(record2.getStudentNumber()); यदि (छात्र संख्या तुलना != 0) { छात्र संख्या तुलना लौटाएँ; } रिटर्न रिकॉर्ड1.getSchool().compareTo(record2.getSchool());});

यह कोड सीधे अलग-अलग फ़ील्ड की तुलना करता है, और अधिक सटीक सॉर्ट क्रम प्रदान करता है।
            
नवीनतम ट्यूटोरियल अधिक>

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

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

Copyright© 2022 湘ICP备2022001581号-3