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

जावा में Comparable और Comparator के बीच अंतर

Comparable और Comparator दोनों इंटरफेस हैं जिनका उपयोग कलेक्शन के एलिमेंट्स को सॉर्ट करने के लिए किया जा सकता है। Comparator इंटरफेस java.util पैकेज से संबंधित है जबकि Comparable java.lang पैकेज से संबंधित है। Comparator इंटरफेस उसे प्रदान किए गए दो ऑब्जेक्ट्स का उपयोग करके कलेक्शन को सॉर्ट करता है, जबकि Comparable इंटरफेस "this" को संदर्भित करता है जो उसे प्रदान किए गए एक ऑब्जेक्ट से तुलना करता है।

क्र.सं. मुख्य बिंदु Comparable Comparator
1 मेथड्स Comparable इंटरफेस में compareTo(Object o) मेथड होता है Comparator में compare(Object o1, Object o2) मेथड होता है
2 सॉर्टिंग उपयोग Collections.sort(List) मेथड का उपयोग Comparable टाइप ऑब्जेक्ट्स के कलेक्शन को सॉर्ट करने के लिए किया जा सकता है Collections.sort(List, Comparator) मेथड का उपयोग Comparator टाइप ऑब्जेक्ट्स के कलेक्शन को सॉर्ट करने के लिए किया जा सकता है
3 सॉर्टिंग सीक्वेंस Comparable सिंगल सॉर्टिंग सीक्वेंस प्रदान करता है Comparator मल्टीपल सॉर्टिंग सीक्वेंस प्रदान करता है
4 पैकेज Comparable इंटरफेस java.lang पैकेज से संबंधित है Comparator इंटरफेस java.util पैकेज से संबंधित है

Comparable का उदाहरण

public class Laptop implements Comparable<Laptop> {
    String name;
    int ram;
    int price;
    
    public Laptop(String name, int ram, int price) {
        this.name = name;
        this.ram = ram;
        this.price = price;
    }
    
    @Override
    public int compareTo(Laptop o) {
        if (this.ram > o.getRam())
            return 1;
        else
            return -1;
    }
    
    // गेटर्स और सेटर्स...
}

public class ComparableExample {
    public static void main(String[] args) {
        List<Laptop> laptopList = new ArrayList<>();
        laptopList.add(new Laptop("HCL", 16, 800));
        laptopList.add(new Laptop("Apple", 8, 100));
        laptopList.add(new Laptop("Dell", 4, 600));
        Collections.sort(laptopList);
        for (Laptop lap : laptopList) {
            System.out.println(lap.getRam());
        }
    }
}

आउटपुट

4
8
16

Comparator का उदाहरण

import java.util.*;

public class LaptopComparator implements Comparator<Laptop> {
    @Override
    public int compare(Laptop o1, Laptop o2) {
        if (o1.getRam() < o2.getRam()) {
            return -1;
        } else if (o1.getRam() > o2.getRam()) {
            return 1;
        } else {
            return 0;
        }
    }
    
    public static void main(String[] args) {
        List<Laptop> laptopList = new ArrayList<>();
        laptopList.add(new Laptop("HCL", 16, 800));
        laptopList.add(new Laptop("Apple", 8, 100));
        laptopList.add(new Laptop("Dell", 4, 600));
        
        // नाम के आधार पर सॉर्ट करने के लिए लैम्ब्डा
        Comparator<Laptop> com = (o1, o2) -> o1.getName().compareTo(o2.getName());
        Collections.sort(laptopList, com);
        
        for (Laptop lap : laptopList) {
            System.out.println(lap.getName());
        }
    }
}

आउटपुट

Apple
Dell
HCL

मुख्य अंतर सारांश

  • Comparable: नेचुरल ऑर्डरिंग के लिए, क्लास के अंदर इम्प्लीमेंट होता है, सिंगल सॉर्ट ऑर्डर
  • Comparator: कस्टम ऑर्डरिंग के लिए, अलग क्लास या लैम्ब्डा में इम्प्लीमेंट होता है, मल्टीपल सॉर्ट ऑर्डर संभव
  1. - जावा में Comparable और Comparator के बीच अंतर

    Comparable और Comparator दोनों इंटरफेस हैं जिनका उपयोग कलेक्शन के एलिमेंट्स को सॉर्ट करने के लिए किया जा सकता है। Comparator इंटरफेस java.util पैकेज से संबंधित है जबकि Comparable java.lang पैकेज से संबंधित है। Comparator इंटरफेस उसे प्रदान किए गए दो ऑब्जेक्ट्स का उपयोग करके कलेक्शन को सॉर्ट करता है,

  1. - जावा में Iterator और Enumeration के बीच अंतर

    Iterator और Enumeration दोनों कलेक्शन से एलिमेंट्स को ट्रैवर्स और एक्सेस करने के लिए कर्सर हैं। वे दोनों कलेक्शन फ्रेमवर्क से संबंधित हैं। Enumeration JDK 1.0 में जोड़ा गया था और Iterator JDK 1.2 वर्जन में कलेक्शन फ्रेमवर्क में जोड़ा गया। Enumeration कलेक्शन में स्ट्रक्चरल चेंज नहीं कर सकता क्योंकि

  1. - Java में ArrayList और HashSet के बीच अंतर

    HashSet और ArrayList दोनों Java कलेक्शन फ्रेमवर्क के सबसे महत्वपूर्ण क्लासेस में से कुछ हैं।ArrayList और HashSet के बीच महत्वपूर्ण अंतर निम्नलिखित हैं।क्रमांकमुख्य बिंदुArrayListHashSet1कार्यान्वयनArrayList लिस्ट इंटरफेस का कार्यान्वयन है।दूसरी ओर HashSet सेट इंटरफेस का कार्यान्वयन है।2आंतरिक कार्या