إعلان
دورة تطوير التطبيقات باستخدام لغة JavaScript في هذه الدورة ستتعلم لغة جافا سكريبت, استخدام مكتبة React.js, بناء API الموقع بواسطة Node.js, تطوير تطبيق جوال باستخدام React Native, و في نهاية الدورة ستتعلم تطوير تطبيق محادثة شبيه بتطبيق WhatsApp. تعلم الآن
دورة تطوير واجهات المستخدم في هذه الدورة ستتعلم لغة HTML و لغة CSS و لغة JavaScript. من ناحية التطبيق العملي ستتعلم طريقة بناء واجهة متجر إلكتروني مكون من ست صفحات, تحويل خمسة تصاميم PSD إلى صفحات ويب, بناء واجهة مستخدم تشبه موقع يوتيوب, بناء لوحة تحكم إحترافية. تعلم الآن
تطوير تطبيقات باستخدام لغة بايثون في هذه الدورة ستتعلم أساسيات البرمجة بلغة بايثون وصولاً إلى التعامل مع أشهر أطر العمل (Flask و Django) و ستتعلم كيف تبني متجر إلكتروني يمكن للمستخدمين البيع و الشراء من خلاله. تعلم الآن
دورة تطوير تطبيقات الويب باستخدام لغة PHP في هذه الدورة ستتعلم لغة PHP من الصفر, استخدام إطار العمل Laravel بشرح مفصّل و عملي, كيفية تطوير شبكة اجتماعية تشبه Instagram, بناء API لتطبيق جوال وفق أسلوب RESTful, تطوير موقع إعلانات مبوبة, تطوير نظام إدارة محتوى CMS كامل. تعلم الآن
دورة تطوير تطبيقات الويب باستخدام لغة Ruby في هذه الدورة ستتعلم البرمجة بلغة Ruby إنطلاقاً من أبسط المفاهيم وحتى بناء تطبيق حقيقي, إستخدام إطار العمل Ruby on Rails بشرح مفصّل و عملي, بناء تطبيق حقيقي عبارة عن شبكة اجتماعية تشبه تويتر, تطوير مجتمع الكتروني يشبه حسوب I/O. تعلم الآن
دورة علوم الحاسوب هذه الدورة معدة لتكون مدخل لعلوم الحاسوب و لغات البرمجة حيث ستتعرف فيها على أنظمة التشغيل و ستتعمق في نظام لينكس و في كيفية التعامل معه من خلال موجه الأوامر, بالإضافة إلى قواعد البيانات و أساسيات الشبكات و الخوادم و مبادئ الحماية والأمان في الويب. تعلم الآن

    Java الإنترفيس Comparator في جافا

    مقدمة

    الإنترفيس Comparator مصمم لمقارنة قيم الكائنات.

    يعتمد عليه كل إنترفيس يقوم بترتيب الكائنات التي يتم إدخلها فيه, سواء كان ترتيباً حسب القيمة أو ترتيباً أبجدياً.
    فمثلاً, عند إنشاء كائن من الكلاس TreeSet نجد العناصر فيه تم ترتيبها بشكل تصاعدي حسب قيمهم في حال كانت عناصره عبارة عن أرقام, أو ترتيباً أبجدياً في حال كانت عناصره تمثل نصوص.

    دوال الإنترفيس Comparator

    الجدول التالي يحتوي على دوال الإنترفيس Comparator.

    الدالة مع تعريفها
    public int compare(Object obj1, Object obj2) تقارن الكائن obj1 و الكائن obj2 من أجل ترتيبهم.
    يجب أن تفعل لها Override لتحدد كيف تريدها أن تقارن الكائنين, أي على أي أساس سيتم ترتيبهم.
    فمثلاً يمكنك جعلها تقارن عدد أحرف الكائنين في حال كانوا عبارة عن نصوص, و يمكنك جعلها تقارن قيمة الكائنين في حال كانوا عبارة عن أرقام.
    public boolean equals(Object obj) ترجع true في حال كان الكائن الموضوع فيها كـ Argument يساوي الكائن الذي قام باستدعائها.

    مثال شامل

    في المثال التالي قمنا بإنشاء كلاس إسمه NumbersComparator يفعل implements للإنترفيس Comparator.
    إذاً على الكلاس NumbersComparator أن يفعل Override للدالة compare() حتى تقارن الأرقام بالطريقة التي نريد.

    الدالة compare() عندها باراميترين من النوع Object. يجب جعلها تقارن أي كائنين نمررهما لها بالطريقة التي نريد.

    سنجعلها تقارن أي رقمين كالتالي:

    • ترجع 0 في حال كانا متساوييان.
    • ترجع 1 في حال كانت قيمة الكائن obj1 أكبر من قيمة الكائن obj2.
    • ترجع 1- في حال كانت قيمة الكائن obj1 أصغر من قيمة الكائن obj2.

    في الأخير قمنا بإنشاء كلاس إسمه Main لتجربة الدالة compare() فيه.


    NumbersComparator.java
    import java.util.Comparator;                              // Comparator هنا قمنا باستدعاء الإنترفيس
     
    public class NumbersComparator implements Comparator {    // implements هنا فعلنا له
     
        @Override                                             // لنحدد ماذا ستفعل عند استدعائها compare() للدالة Override هنا فعلنا
        public int compare(Object o1, Object o2) {
    
    		if( o1 == null || o2 == null ) {     // سيتم إرجاع القيمة 0 o2 أو الكائن o1 مكان الكائن null إذا تم إدخال
                return 0;
            }
     
            try {                                // num2 و num1 سيتم تخزينهم كأرقام عادية في المتغيرات null لا يساويان o2 و o1 إذا كان كلا الكائنان
                double num1 = (double)o1;
                double num2 = (double)o2;
     
                if( num1 == num2 ) {             // سترجع 0 إلى مكان الإستدعاء num2 تساوي قيمة num1 في حال كانت قيمة
                    return 0;
                }
                else if( num1 > num2 ) {         // سترجع 1 إلى مكان الإستدعاء num2 أكبر من قيمة num1 في حال كانت قيمة
                    return 1;
                }
                else {                           // -1 هي الأكبر و عندها سيتم إرجاع num2 الإحتمال الأخير أن تكون قيمة
                    return -1;
                }
            }
            catch(Exception e) {                 // إلى أرقام سيتم إرجاع 0 إلى مكان الإستدعاء o2 و o1 في حال كان لا يمكن تحويل قيمة كل من
                return 0;
            }
    
        }
     
    }
    		

    Main.java
    public class Main {
     
        public static void main(String[] args) {
     
            // منه compare() حتى نستطيع استخدام الدالة NumbersComparator هنا قمنا بإنشاء كائن من الكلاس
            NumbersComparator nc = new NumbersComparator();
     
            // هنا قمنا بقارنة رقمين مع بعضها في كل مرة مع عرض نتيجة المقارنة
            System.out.println( nc.compare(20, 10) );
            System.out.println( nc.compare(10, 20) );
            System.out.println( nc.compare(20, 20) );
     
            // تقارن الأرقام فقط compare() هنا سيتم عرض 0 في الحالتين لأننا جعلنا الدالة
            System.out.println( nc.compare("java", "c++") );
            System.out.println( nc.compare(null, 0) );
     
        }
     
    }
    		

    سنحصل على النتيجة التالية عند التشغيل.

    1
    -1
    0
    0
    0
    		
    إعلان

    Eqla3Tech.com

    شروحات مكتوبة حول لغات البرمجة و تقنية المعلومات باللغة العربية مقدمة من إقلاع تك.

    لغة جافا لغة ++C قواعد البيانات نظام ويندوز نظام لينكس الشبكات تقنية المعلومات الأمن السيبراني

    الدورات

    أدوات مساعدة

    الأقسام

    دورات
    مقالات أسئلة مشاريع كتب