در بخش قبل کمی با آبجکت ها کار کردیم. حال می خواهیم روش مرتب سازی این آبجکت ها رو بر اساس خصوصیت داخل آن ها آموزش دهیم. این روش توسط 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);
سلام.یه چیزی دیدم توی سایتتون که گفتم بی انصافیه اگه نگم،باورش سخته که هیچ سایت فارسی زبانی در مورد diffmerge صحبت نکرده حتی توی ۲۰۰ تا ریزالت اول گوگل هم همه انگلیسی هستن.فقط شما صحبت کردین.مرسی
سلام
ممنون از محبتتون. دلیلی که من حرف زدم این بود که این سری آموزشی بیشتر تجربی بود تا علمی. میرفتم جلو هرچی یادم میومد میگفتم براش دنبال این نبودم که فقط بگم جاوا فلانه یه بیساره.
متاسفانه وقت اجازه نداد ادامه بدم آموزش جاوا رو. به شدت به فکر آموزش ویدیویی رایگانش هستم. انشالله فرصت کنم بسازم براش.