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: कस्टम ऑर्डरिंग के लिए, अलग क्लास या लैम्ब्डा में इम्प्लीमेंट होता है, मल्टीपल सॉर्ट ऑर्डर संभव