JavaRush /جاوا بلاگ /Random-SD /طريقن جي ڀيٽ ۾

طريقن جي ڀيٽ ۾

گروپ ۾ شايع ٿيل
هڪ ئي قسم جي شين کي ترتيب ڏيڻ لاءِ هڪ صف يا مجموعو ۾ ذخيرو ٿيل، جاوا ڊولپرز سان گڏ آيا 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مان String۽ طبقن مان Integer. مثال طور، ڪلاس جي شين لاءِ Userاسان نالو ترتيب ڏيو، ۽ برابر نالن جي صورت ۾، عمر جي لحاظ کان. شيون انهن جي قدرتي ترتيب ۾ ترتيب ڏني وينديون (جيئن قدر وڌائي). ڪلاس User:
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اچو ته ڪلاس ۾ لاڳو ڪيل طريقي جي آپريشن کي جانچيون ڪلاس ميٿڊ Userاستعمال ڪندي : sortCollections
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