"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > كيفية فرز المجموعات حسب الحقول المتعددة بكفاءة باستخدام Java 8 Lambda؟

كيفية فرز المجموعات حسب الحقول المتعددة بكفاءة باستخدام Java 8 Lambda؟

تم النشر بتاريخ 2024-11-06
تصفح:996

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

فرز المجموعات ذات الحقول المتعددة باستخدام Java 8 Lambda

يبدو رمز الفرز المقدم غير مكتمل وقد لا ينتج الترتيب المفرز المتوقع. دعونا نتعمق في نهج أكثر كفاءة وشمولاً باستخدام Java 8 lambda.

باستخدام Java 8 lambda

يعمل Java 8 على تبسيط فرز القائمة من خلال توفير تعبيرات lambda البديهية التي تسمح بإيجاز وسهولة القراءة. شفرة. خذ بعين الاعتبار ما يلي:

Collections.sort(reportList, Comparator.comparing(Report::getReportKey)
            .thenComparing(Report::getStudentNumber)
            .thenComparing(Report::getSchool));

يقوم هذا النهج القائم على لامدا بتسلسل عملية المقارنة، وفرز القائمة بشكل فعال بناءً على الحقول المحددة بترتيب الأسبقية المحدد بواسطة طريقة .thenComparing().

تحليل الكود الأصلي

يقوم الكود الأصلي الذي قدمته بتسلسل السلاسل الخاصة بمفتاح التقرير ورقم الطالب والمدرسة:

return (record1.getReportKey()   record1.getStudentNumber()   record1.getSchool())
        .compareTo(record2.getReportKey()   record2.getStudentNumber()   record2.getSchool());

بدلاً من ذلك، للفرز المناسب، يجب عليك مقارنة الحقول بشكل مستقل.

وظيفة الفرز المحسنة

إليك نسخة محسنة من وظيفة الفرز باستخدام بناء جملة لامدا:

Collections.sort(reportList, (record1, record2) -> {
        int reportKeyComparison = record1.getReportKey().compareTo(record2.getReportKey());
        if (reportKeyComparison != 0) {
            return reportKeyComparison;
        }

        int studentNumberComparison = record1.getStudentNumber().compareTo(record2.getStudentNumber());
        if (studentNumberComparison != 0) {
            return studentNumberComparison;
        }

        return record1.getSchool().compareTo(record2.getSchool());});

يقوم هذا الرمز بمقارنة الحقول الفردية مباشرة، مما يوفر ترتيب فرز أكثر دقة.

أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3