خانه » آموزش Comparable و Comparator در جاوا
آموزش Comparable و Comparator
آموزش 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);

 

ارسال نظر

برای ارسال نظر اینجا را کلیک کنید