تاریخ امروز:1 اردیبهشت 1403
آموزش comparable و comparator

آموزش Comparable و Comparator در جاوا

در بخش قبل کمی با آبجکت ها کار کردیم. حال می خواهیم روش مرتب سازی این آبجکت ها رو بر اساس خصوصیت داخل آن ها آموزش دهیم. این روش توسط Comparable و Comparator انجام می گیرید. در واقع Comparable و Comparator روشی هستند که توسط آن ها ما آبجکت ها رو مرتب می کنیم.

مرتب کردن توسط Comparable

برای مرتب کردن توسط Comparable ابتده مثال زیر را در نظر بگیرید:

public class SortTest implements Comparable<SortTest> {
    private int co;
    private String name,type;

    public SortTest(int co, String name, String type) {
        this.co = co;
        this.name = name;
        this.type = type;
    }

    public int getCo() {
        return co;
    }

    public void setCo(int co) {
        this.co = co;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getType() {
        return type;
    }

    public void setType(String type) {
        this.type = type;
    }

    @Override
    public int compareTo(SortTest compareTest) {
        int compareCo = ((SortTest) compareTest).getCo();

        //ascending order
        return this.co - compareCo;
        //descending order
        //return compareCo - this.co;
    }
}

برای Sort کردن یک آبجکت یا شیء توسط خصوصیات آن، شما باید آبجکت ای ایجاد کنید که اینترفیس Comparable را Implement کرده و متد CompareTo() آن را override کند.

مرتب کردن توسط Comparator

در مثال بالا ما یک Integer را مرتب سازی کردیم. حال فرض کنید می خواهید بر اساس اسم (متغیر Name) مرتب سازی را انجام دهید:

public static Comparator<SortTest> SortNameComparator
= new Comparator<SortTest>() {
public int compare(SortTest name1, SortTest name2) {

String ObjName1 = name1.getName().toUpperCase();
String ObjName2 = name2.getName().toUpperCase();

//ascending order
return ObjName1.compareTo(ObjName2);

//descending order
//return ObjName2.compareTo(ObjName1);
}
};

برای این کار کافی هستش کد بالا را به کلاستون اضافه کنید.

حال به سادگی، توسط دستورات Sort آرایه که قبلا در سایت آموزش دادم می توانید آرایه را مرتب کنید:

 SortTest[] so = new SortTest[4];
 SortTest test1 = new SortTest(1,"Soroush","Java");
 SortTest test2 = new SortTest(1,"Tayyebi","Java");
 SortTest test3 = new SortTest(1,"Mohsen","Java");

 so[0] = test1;
 so[1] = test2;
 so[2] = test3;

Arrays.sort(so, SortTest.SortNameComparator);

 

2 Comments

  1. آواتار سعیدسعید پاسخ

    سلام.یه چیزی دیدم توی سایتتون که گفتم بی انصافیه اگه نگم،باورش سخته که هیچ سایت فارسی زبانی در مورد diffmerge صحبت نکرده حتی توی ۲۰۰ تا ریزالت اول گوگل هم همه انگلیسی هستن.فقط شما صحبت کردین.مرسی

    1. آواتار سروش طیبیسروش طیبی Post author پاسخ

      سلام
      ممنون از محبتتون. دلیلی که من حرف زدم این بود که این سری آموزشی بیشتر تجربی بود تا علمی. میرفتم جلو هرچی یادم میومد میگفتم براش دنبال این نبودم که فقط بگم جاوا فلانه یه بیساره.
      متاسفانه وقت اجازه نداد ادامه بدم آموزش جاوا رو. به شدت به فکر آموزش ویدیویی رایگانش هستم. انشالله فرصت کنم بسازم براش.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *