JavaRush /جاوا بلاگ /Random-UR /طریقہ سے موازنہ کریں۔

طریقہ سے موازنہ کریں۔

گروپ میں شائع ہوا۔
ایک صف یا مجموعہ میں ذخیرہ کردہ ایک ہی قسم کی اشیاء کو منظم کرنے کے لیے، جاوا ڈویلپرز کے ساتھ آئے Comparable۔ یہ صرف ایک طریقہ کا اعلان کرتا ہے compareTo:
public interface Comparable<T> {
    public int compareTo(T o);
}
موازنہ کرنے کا طریقہ - 1ایک انٹرفیس کو اس Comparableچیز کی قسم سے پیرامیٹرائز کیا جاتا ہے جسے وہ طریقہ کے پیرامیٹر کے طور پر قبول کرتا ہے compareTo۔ اس صورت میں، ہم مرتب کرنے والے کو متنبہ کرتے ہیں کہ ہم کس قسم کی اشیاء کا موازنہ کرنے جا رہے ہیں۔ اگر قسم کی شناخت کی شرط پوری نہیں ہوتی ہے تو ہمیں ایک غلطی موصول ہوگی ClassCastException۔ جاوا میں ایک طریقہ compareToکالنگ آبجیکٹ کا پیرامیٹر کے طور پر پاس کردہ آبجیکٹ سے موازنہ کرتا ہے اور موازنہ کے نتیجے میں ایک عدد واپس کرتا ہے:
  • مثبت اگر کالنگ آبجیکٹ پیرامیٹر کے طور پر پاس کردہ آبجیکٹ سے بڑا ہو؛
  • منفی اگر کالنگ آبجیکٹ پیرامیٹر کے طور پر پاس کردہ آبجیکٹ سے چھوٹا ہو؛
  • null اگر اشیاء برابر ہوں۔
تحریر آبجیکٹ موازنہ منطق کلاس ڈویلپر کی واحد تشویش ہے اور ترتیب دینے کے مطلوبہ نتائج سے طے ہوتی ہے۔

جاوا میں compareTo طریقہ کی ضرورت کیوں ہے؟

جاوا پروگرامر کو اکثر اشیاء کی صفوں اور فہرستوں سے نمٹنا پڑتا ہے۔ بڑی مقدار میں ڈیٹا کے ساتھ کام کرتے وقت، اسے منظم یا ترتیب شدہ شکل میں ذخیرہ کرنا اکثر آسان ہوتا ہے۔ سب سے پہلے، یہ ضروری معلومات کی تلاش کے دوران جمع کرنے کے ساتھ کام کرنے کی رفتار کو تیز کرتا ہے، اور دوسرا، منظم ڈیٹا کو بصری طور پر بہتر سمجھا جاتا ہے۔
موازنہ کرنے کا طریقہ - 2
اشیاء کی صفوں کو ترتیب دینے کا ایک آسان اور مؤثر طریقہ sort()کلاس طریقہ ہے Arrays، اور فہرست کی شکل میں اشیاء کا مجموعہ اسی طرح کا کلاس طریقہ ہے Collections۔ ان طریقوں کو استعمال کرتے ہوئے ترتیب دینے کے لیے، جاوا کے ڈویلپرز نے ہمیں یہ انتخاب کرنے کی آزادی دی کہ کس طرح چھانٹنے کے معیار کی وضاحت کی جائے: Comparableان اشیاء کی کلاس میں انٹرفیس کو لاگو کرکے جسے ہم چھانٹنا چاہتے ہیں، یا استعمال کرکے Comparator۔ پہلی صورت میں، ترتیب دینے کے طریقے ایک صف یا فہرست کی شکل میں اشیاء کے سیٹ کو قبول کرتے ہیں:
sort(T[]array)//sorting массива
sort(List<T> list)// sorting списка
اور دوسرے میں - پلس انٹرفیس کا ایک اور نفاذ Comparator:
sort(T[]array, Comparator <? super T> comparator)//sorting массива
sort(List<T> list, Comparator <? super T> comparator)// sorting списка
انٹرفیس Comparableاس وقت استعمال ہوتا ہے جب ہم چھانٹتے وقت اشیاء کی قدرتی (ہمارے نقطہ نظر سے سب سے زیادہ منطقی) ترتیب ترتیب دینا چاہتے ہیں۔ یہ ڈیزائن کے مرحلے پر اس کلاس کی اشیاء کا موازنہ کرنے کے لیے الگورتھم کو "ہارڈ وائر" کرنے کا ایک طریقہ بھی ہے۔ مثال کے طور پر ، اس انٹرفیس کے نفاذ کا استعمال کرتے ہوئے، بنیادی قدیم اقسام کی ریپر کلاسز میں قدرتی ترتیب کے معیار کی وضاحت کی گئی ہے: , Byte, Character, Long, Integer, Short, Double, Float. اس کا مطلب یہ بھی ہے کہ ان کلاسز کے پاس ایک نافذ شدہ طریقہ ہے جسے ہم پروگرام میں استعمال کر سکتے ہیں اگر ضروری ہو تو۔ آئیے سٹرنگ موازنے کی ایک مثال دیکھیں کہ یہ طریقہ کلاس میں کیسے لاگو ہوتا ہے ۔ BooleanStringcompareToString
String str1="Аарон";
        String str2="АAPOH";
        String str3="аарон";
        String str4="ААрон";
        String str5="аАрон";
        String str6="Берта";
        String str7="берта";
String[] allStr=new String[]{str1,str2,str3,str4, str5,str6, str7};
        Arrays.sort(allStr);
        for (String s:allStr){
            System.out.println(s);
        }
    }
اگر ہم اس کوڈ کو طریقہ کار میں چلاتے ہیں mainتو ہمیں درج ذیل نتیجہ ملے گا:
АAPOH
ААрон
Аарон
Берта
аАрон
аарон
берта
جیسا کہ آپ کلاس میں مثال میں دیکھ سکتے ہیں String، یہ طریقہ compareToتاروں کو حروف تہجی کے لحاظ سے، لغت کے لحاظ سے اور کیس کے لحاظ سے ترتیب دیتا ہے۔ یہ سٹرنگ موازنہ کا یہ حکم ہے جسے کلاس کے ڈویلپرز نے Stringقدرتی طور پر بیان کیا ہے۔ لغت کی ترتیب کیا ہے اس کی آسان تفہیم کے لیے، یہ یاد رکھنا کافی ہے کہ زبان کی لغات میں الفاظ کو کس طرح ترتیب دیا جاتا ہے۔ اعداد کا موازنہ کرتے وقت ، اشیاء کو صعودی ترتیب میں ترتیب دیا جاتا ہے۔ یہ موازنہ منطق کلاسز میں سرایت کر گئی ہے Byte, Character, Long, Integer, Shor, . DoubleFloat

آئیے اپنی کلاس میں موازنہ کو لاگو کریں۔

آئیے ایک مثال دیکھیں کہ آپ اپنی کلاس میں اشیاء کا موازنہ کرنے کی صلاحیت کیسے پیدا کر سکتے ہیں۔ جاوا کے طریقہ کار کو لاگو کرتے وقت compareto، ہم اشیاء کو آرڈر کرنے کے لیے ایک یا زیادہ معیارات بتا سکتے ہیں، اور اور کلاسز comparetoکے طریقے بھی استعمال کر سکتے ہیں ۔ مثال کے طور پر، کلاس اشیاء کے لیے ہم نام کے لحاظ سے ترتیب دیتے ہیں، اور مساوی ناموں کی صورت میں، عمر کے لحاظ سے۔ اشیاء کو ان کی فطری ترتیب میں ترتیب دیا جائے گا (جیسا کہ قدر بڑھتی ہے)۔ کلاس : StringIntegerUserUser
public class User  implements Comparable <User>{//добавляем возможность сравнивать an objectы User

    private String name;
    private Integer age;
    private String email;

    public User(String name, int age, String email) {
        this.name = name;
        this.age = age;
        this.email = email;
    }

    @Override
//реализуем метод compareTo интерфейса Comparable
    public int compareTo(User o) {

//используем метод compareTo из класса String для сравнения имен
        int result = this.name.compareTo(o.name);

//если имена одинаковые -  сравниваем возраст,
используя метод compareTo из класса Integer

        if (result == 0) {
            result = this.age.compareTo(o.age);
        }
        return result;
    }

    @Override
    public String toString() {
        return "{" +
                "name='" + name + '\'' +
                ", age=" + age +
                ", email='" + email + '\'' +
                '}';
    }
آئیے کلاس میتھڈ کا استعمال کرتے ہوئے compareToکلاس میں لاگو طریقہ کار کے آپریشن کی جانچ کرتے ہیں : UsersortCollections
public static void main(String[] args) {
    User user = new User("Andrey", 19, "andryha@mail.ru");
    User user2 = new User("Олег", 25, "oleg@mail.ru");
    User user3 = new User("Andrey", 24,"opr@google.com");
    User user4 = new User("Igor", 16, "igor@mail.ru");
    User user5 = new User("Andrey", 44,"stary@google.com");
    List<User> list = new ArrayList<>();

    list.add(user);
    list.add(user2);
    list.add(user3);
    list.add(user4);
    list.add(user5);

    System.out.println("-------до сортировки--------");
    for (User u : list) {
        System.out.println(u);
    }
    System.out.println("-------после сортировки-----");
    Collections.sort(list);
    for (User u : list) {
        System.out.println(u);
    }
}
 }
}
طریقہ کار کا نتیجہ main:
-------до сортировки--------
{name='Андрей',  age=19,  email='andryha@mail.ru'}
{name='Олег',    age=25,  email='oleg@mail.ru'}
{name='Андрей',  age=24,  email='opr@google.com'}
{name='Игорь',   age=16,  email='igor@mail.ru'}
{name='Андрей',  age=44,  email='stary@google.com'}
-------после сортировки-----
{name='Андрей',  age=19,  email='andryha@mail.ru'}
{name='Андрей',  age=24,  email='opr@google.com'}
{name='Андрей',  age=44,  email='stary@google.com'}
{name='Игорь',   age=16,  email='igor@mail.ru'}
{name='Олег',    age=25,  email='oleg@mail.ru'}
تو، آئیے خلاصہ کرتے ہیں۔ اگر آپ ہر چیز میں ترتیب کے حامی ہیں اور اپنی اشیاء کو غیر ضروری کوڈ کے بغیر کسی صف یا فہرست میں ترتیب دینا چاہتے ہیں تو انٹرفیس استعمال کریں Comparable۔ اس کے compareTo طریقہ کا نفاذ آپ کی کلاس میں قدرتی طور پر اشیاء کو ترتیب دینے کے لیے ایک طریقہ کار بنانا کافی آسان بناتا ہے۔ compareToاگر آپ کو جاوا لائبریری میں بیان کردہ معیاری کلاسوں کی اشیاء کے مجموعوں اور صفوں کے ساتھ کام کرنا ہے، تو ان کلاسوں میں ریڈی میڈ نفاذ کا استعمال کریں ۔
تبصرے
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION