Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Java

Java में compareTo() और compare() मेथड्स में क्या अंतर है?


Comparable इंटरफेस ऑब्जेक्ट्स की ऑर्डरिंग के लिए compareTo() मेथड प्रदान करता है। इस ऑर्डरिंग को क्लास की नेचुरल ऑर्डरिंग कहा जाता है और compareTo() मेथड को इसका नेचुरल कम्पैरिजन मेथड कहा जाता है। Comparator इंटरफेस सॉर्टिंग ऑपरेशन्स करने के लिए मेथड्स प्रदान करता है। Comparator इंटरफेस का उपयोग करके हम मल्टीपल सॉर्टिंग सीक्वेंसेस कर सकते हैं। हम ऑब्जेक्ट्स को मल्टीपल डेटा मेंबर्स के संबंध में सॉर्ट कर सकते हैं।

compareTo()

compareTo() मेथड इस ऑब्जेक्ट की तुलना o1 ऑब्जेक्ट से करता है और एक इंटीजर रिटर्न करता है।

सिंटैक्स

public int compareTo(Object o1)
  • यह नेगेटिव नंबर रिटर्न करता है यदि और केवल यदि यह ऑब्जेक्ट o1 से कम है।
  • यह पॉजिटिव नंबर रिटर्न करता है यदि और केवल यदि यह ऑब्जेक्ट o1 से अधिक है।
  • यह 0 रिटर्न करता है यदि और केवल यदि यह ऑब्जेक्ट o1 के बराबर है।

उदाहरण

import java.util.*;
class Employee implements Comparable {
    String name;
    int age;
    Employee(String name, int age) {
        this.name = name;
        this.age = age;
    }
    // ओवरराइडेड compareTo मेथड
    @Override
    public int compareTo(Object o) {
        return this.age - ((Employee) o).age;
    }
}
public class ComparableDemo {
    public static void main(String[] args) {
        // CREATION
        List list = new ArrayList<>();
        // INSERTION
        list.add(new Employee("Krishna", 30));
        list.add(new Employee("Archana", 28));
        list.add(new Employee("Vineet", 25));
        list.add(new Employee("Ramesh", 38));
        list.add(new Employee("Alok", 28));
        System.out.println("सॉर्टिंग से पहले: ");
        for (Employee e : list) {
            System.out.print("[ EMP : age = " + e.age + " ] ");
        }
        // SORTING
        Collections.sort(list);
        System.out.println("\nसॉर्टिंग के बाद: ");
        for (Employee e : list) {
            System.out.print("[ EMP : age = " + e.age + " ] ");
        }
    }
}

आउटपुट

सॉर्टिंग से पहले: [ EMP : age = 30 ] [ EMP : age = 28 ] [ EMP : age = 25 ] [ EMP : age = 38 ] [ EMP : age = 28 ]
सॉर्टिंग के बाद: [ EMP : age = 25 ] [ EMP : age = 28 ] [ EMP : age = 28 ] [ EMP : age = 30 ] [ EMP : age = 38 ]

compare()

compare() मेथड पहले ऑब्जेक्ट की तुलना दूसरे ऑब्जेक्ट से करता है और एक इंटीजर रिटर्न करता है।

सिंटैक्स

public int compare(Object o1, Object o2)
  • यह नेगेटिव नंबर रिटर्न करता है यदि और केवल यदि o1, o2 से कम है।
  • यह पॉजिटिव नंबर रिटर्न करता है यदि और केवल यदि o1, o2 से अधिक है।
  • यह 0 रिटर्न करता है यदि और केवल यदि o1, o2 के बराबर है।

उदाहरण

import java.util.*;
class Student {
    String name;
    int age, roll;
    Student(String name, int age, int roll) {
        this.name = name;
        this.age = age;
        this.roll = roll;
    }
}
class AgeComparator implements Comparator {
    @Override
    public int compare(Object o1, Object o2) {
        return ((Student) o1).age - ((Student) o2).age;
    }
}
class RollComparator implements Comparator {
    @Override
    public int compare(Object o1, Object o2) {
        return ((Student) o1).roll - ((Student) o2).roll;
    }
}
public class ComparatorDemo {
    public static void main(String[] args) {
        List list = new ArrayList<>();
        list.add(new Student("Ramesh", 30, 20));
        list.add(new Student("Adithya", 7, 10));
        list.add(new Student("Krishna", 25, 5));
        list.add(new Student("Vineet", 24, 15));
        System.out.println("सॉर्टिंग से पहले");
        for (Student e : list) {
            System.out.println("[ STU : name = " + e.name + " age = " + e.age + " roll = " + e.roll + "]");
        }
        Collections.sort(list, new AgeComparator());
        System.out.println("उम्र के साथ सॉर्टिंग के बाद");
        for (Student e : list) {
            System.out.println("[ STU : name = " + e.name + " age = " + e.age + " ]");
        }
        Collections.sort(list, new RollComparator());
        System.out.println("रोल के साथ सॉर्टिंग के बाद");
        for (Student e : list) {
            System.out.println("[ STU : name = " + e.name + " roll = " + e.roll + " ]");
        }
    }
}

आउटपुट

सॉर्टिंग से पहले
[ STU : name = Ramesh age = 30 roll = 20 ]
[ STU : name = Adithya age = 7 roll = 10 ]
[ STU : name = Krishna age = 25 roll = 5 ]
[ STU : name = Vineet age = 24 roll = 15 ]
उम्र के साथ सॉर्टिंग के बाद
[ STU : name = Adithya age = 7 ]
[ STU : name = Vineet age = 24 ]
[ STU : name = Krishna age = 25 ]
[ STU : name = Ramesh age = 30 ]
रोल के साथ सॉर्टिंग के बाद
[ STU : name = Krishna roll = 5 ]
[ STU : name = Adithya roll = 10 ]
[ STU : name = Vineet roll = 15 ]
[ STU : name = Ramesh roll = 20 ]

  1. Java में JTextField और JTextArea में क्या अंतर है? Java में JTextField और JTextArea में क्या अंतर है?

    Java में JTextField और JTextArea के बीच मुख्य अंतर यह है कि एक JTextField GUI एप्लिकेशन में टेक्स्ट की सिंगल लाइन एंटर करने की अनुमति देता है जबकि JTextArea GUI एप्लिकेशन में टेक्स्ट की मल्टीपल लाइन्स एंटर करने की अनुमति देता है। JTextField एक JTextField सबसे महत्वपूर्ण कंपोनेंट्स में से एक है जो

  1. Java में JFrame और JDialog में क्या अंतर है? Java में JFrame और JDialog में क्या अंतर है?

    JFrame फ्रेम में जोड़े गए कंपोनेंट्स को इसकी सामग्री कहा जाता है, इन्हें contentPane द्वारा प्रबंधित किया जाता है। JFrame में कंपोनेंट जोड़ने के लिए, हमें इसके contentPane का उपयोग करना चाहिए। एक JFrame में टाइटल, बॉर्डर, (वैकल्पिक) मेनू बार और यूज़र-स्पेसिफाइड कंपोनेंट्स के साथ एक विंडो होती है। ए

  1. Java में GridLayout और GridBagLayout में क्या अंतर है? Java में GridLayout और GridBagLayout में क्या अंतर है?

    एक GridLayout सभी कंपोनेंट्स को एक आयताकार ग्रिड में रखता है और इसे समान आकार के आयतों में विभाजित करता है और प्रत्येक कंपोनेंट को एक आयत के अंदर रखा जाता है जबकि GridBagLayout एक लचीला लेआउट मैनेजर है जो कंपोनेंट्स को वर्टिकली और हॉरिजॉन्टली संरेखित करता है बिना यह आवश्यकता के कि कंपोनेंट्स समान आक