तुलनीय बनाम तुलनित्र Java
तुलनीय और तुलनित्र के बीच मुख्य अंतर Java
- तुलनीय Java एक ऑब्जेक्ट है जो स्वयं की तुलना किसी अन्य ऑब्जेक्ट से करता है, जबकि तुलनित्र (Comparator) विभिन्न वर्गों के विभिन्न ऑब्जेक्ट की तुलना करने के लिए एक ऑब्जेक्ट है।
- तुलनीय प्रदान करता है
compareTo()
तत्वों को क्रमबद्ध करने की विधि Java, जबकि तुलनित्र प्रदान करता हैcompare()
तत्वों को क्रमबद्ध करने की विधि Java. - एक तुलनीय इंटरफ़ेस मौजूद है
java.lang
पैकेज, जबकि तुलनित्र इंटरफ़ेस में मौजूद हैjava.util
पैकेज. - कंपैरेबल एकल सॉर्टिंग अनुक्रम प्रदान करता है, जबकि कंपरेटर एकाधिक सॉर्टिंग अनुक्रम प्रदान करता है।
- तुलनीय मूल वर्ग को प्रभावित करता है, जबकि तुलनित्र मूल वर्ग को प्रभावित नहीं करता है।

यहां, मैंने तुलनीय और तुलनित्र के बीच अंतर का विश्लेषण किया है और उनके पक्ष और विपक्ष का व्यापक मूल्यांकन किया है।
तुलना किसमें की जा सकती है? Java?
तुलनीय in Java एक ऑब्जेक्ट है जो खुद की तुलना किसी अन्य ऑब्जेक्ट से करता है। यह कस्टम ऑब्जेक्ट की सूची को सॉर्ट करने में मदद करता है। Java.lang.तुलनीय इंटरफ़ेस को इसके उदाहरणों की तुलना करने के लिए एक क्लास द्वारा कार्यान्वित किया जाना चाहिए। तुलनीय इंटरफ़ेस को कार्यान्वित करने वाली ऑब्जेक्ट्स की एक सरणी स्वचालित रूप से सॉर्ट की जाती है Arrays.sort
और Collections.sort
तरीकों.
तुलनीय में प्रयुक्त विधि
मैं एक महत्वपूर्ण विधि पर प्रकाश डालना चाहूंगा जिसका उपयोग मैं अक्सर कंपैरेबल इंटरफ़ेस में करता हूं:
से तुलना करें():
CompareTo() विधि का उपयोग स्ट्रिंग पर प्राकृतिक सॉर्टिंग करने के लिए किया जाता है। प्राकृतिक सॉर्टिंग का अर्थ वह सॉर्ट क्रम है जो ऑब्जेक्ट पर लागू होता है, उदाहरण के लिए, पूर्णांकों को सॉर्ट करने के लिए संख्यात्मक क्रम, स्ट्रिंग के लिए वर्णमाला क्रम, आदि।
का वाक्य विन्यास CompareTo()
विधि इस प्रकार है:
int compareTo(T obj)
उपरोक्त वाक्यविन्यास में, T उन वस्तुओं के प्रकार को दर्शाता है जिनकी आप तुलना करने जा रहे हैं।
CompareTo()
विधि ऑब्जेक्ट की तुलना T obj से करती है.
आउटपुट:
- यदि मान समान हैं तो यह 0 लौटाता है।
- यदि ऑब्जेक्ट का मान कम है, तो यह विधि ऋणात्मक मान लौटाती है।
- यदि ऑब्जेक्ट का मान अधिक है, तो यह धनात्मक मान लौटाता है।
तुलनीय का एक उदाहरण Java
निम्नलिखित कार्यक्रम Java तुलनात्मक उदाहरण दो वर्णों, “a” और “b” की तुलना दर्शाता है। वर्ण “a” वर्णक्रमानुसार “b” से पहले आता है।
इसलिए, आउटपुट -1 है। वर्ण “b” वर्णक्रमानुसार “a” के बाद आता है। इसलिए, आउटपुट 1 है। वर्ण “a” और “b” दोनों समान हैं। इसलिए, आउटपुट 0 है।
public class Sample_String { public static void main(String[] args) { String str_Sample = "a"; System.out.println("Compare To 'a' b is : " + str_Sample.compareTo("b")); str_Sample = "b"; System.out.println("Compare To 'b' a is : " + str_Sample.compareTo("a")); str_Sample = "b"; System.out.println("Compare To 'b' b is : " + str_Sample.compareTo("b")); } }
उत्पादन
Compare To 'a' b is : -1 Compare To 'b' a is : 1 Compare To 'b' b is : 0
तुलनित्र क्या है? Java?
एक तुलनित्र in Java विभिन्न वर्गों की विभिन्न वस्तुओं की तुलना करने के लिए एक ऑब्जेक्ट है। तुलनित्र इंटरफ़ेस Java इसका उपयोग उपयोगकर्ता-परिभाषित कक्षाओं के ऑब्जेक्ट को व्यवस्थित करने के लिए भी किया जाता है। इसमें दो महत्वपूर्ण तुलनित्र इंटरफ़ेस विधियाँ शामिल हैं जिन्हें तुलना (ऑब्जेक्ट obj1, ऑब्जेक्ट obj2) और बराबर (ऑब्जेक्ट तत्व) के रूप में जाना जाता है।
तुलनित्र में प्रयुक्त विधि
अपने अभ्यास में, मैं प्रायः तुलनित्र इंटरफ़ेस की निम्नलिखित महत्वपूर्ण विधियों पर निर्भर करता हूँ:
तुलना करना():
Compare()
आपको ऑब्जेक्ट को ऑर्डर करने में सक्षम बनाता है। ऐसा करने के लिए, आपको एक क्लास बनाना होगा जो एक तुलनित्र इंटरफ़ेस को लागू करता है। इसके बाद, आपको इसकी तुलना विधि को ओवरराइड करना होगा।
का वाक्यविन्यास compare()
विधि इस प्रकार है:
compare(Object obj1, Object obj2)
उपरोक्त सिंटैक्स में, obj1 और obj2 दो ऑब्जेक्ट हैं जिनकी तुलना आपको Compare() विधि का उपयोग करके करनी है। compare()
विधि.
आउटपुट:
- यदि पहला तर्क दूसरे से छोटा है तो यह ऋणात्मक पूर्णांक लौटाता है।
- यदि पहला तर्क और दूसरा तर्क समान हैं तो शून्य लौटाता है।
- यह विधि उस स्थिति में धनात्मक पूर्णांक लौटा सकती है जब पहला तर्क दूसरे से बड़ा हो।
आपको यह सुनिश्चित करना होगा कि संबंध सकर्मक है। उदाहरण के लिए, ((compare(a, b)>0) && (compare(b, c)>0)) जिसका अर्थ है Compare(a, c)>0.
तुलनीय का एक उदाहरण Java
नीचे में Java तुलनित्र उदाहरण, वहाँ 6 हैं चर. “x”, “y”, “p”, “q”, “r”, और “s”। आउटपुट -1 है क्योंकि “x”, 20 का मान “y”, 30 के मान से कम है। आउटपुट 0 है क्योंकि “p”, 40 का मान “q”, 40 के मान के बराबर है।
import java.lang.Integer; public class example { public static void main(String args[]) { int x = 20; int y = 30; // as 10 less than 20, // Output will be a value less than zero System.out.println(Integer.compare(x, y)); int p = 40; int q = 40; // as 30 equals 30, // Output will be zero System.out.println(Integer.compare(p, q)); int r = 20; int s = 7; // as 15 is greater than 8, // Output will be a value greater than zero System.out.println(Integer.compare(r, s)); } }
आउटपुट:
-1 0 1
बराबर():
Equals()
सत्यापित करता है कि संख्या ऑब्जेक्ट उस ऑब्जेक्ट के बराबर है, जिसे तर्क के रूप में पास किया गया है, या नहीं।
का वाक्यविन्यास equals()
विधि इस प्रकार है:
public boolean equals(Object o)
यह विधि दो पैरामीटर लेती है: 1) कोई भी ऑब्जेक्ट, और 2) रिटर्न वैल्यू। यदि पास किया गया तर्क शून्य नहीं है और समान संख्यात्मक मान वाला समान प्रकार का ऑब्जेक्ट है, तो यह सत्य लौटाता है।
बराबर विधि उदाहरण:
नीचे दिए गए उदाहरण में, मैं चार चरों की एक दूसरे से तुलना करूँगा। तीन चर पूर्णांक प्रकार के हैं, और एक लघु प्रकार का है। पहला परिणाम गलत है क्योंकि p का मान, जो 5 है, q के मान के बराबर नहीं है, जो 20 है।
दूसरा परिणाम सत्य है, क्योंकि चर p और r का मान समान है, जो 5 है। अंत में, आउटपुट गलत है, क्योंकि चर p और s के मान अलग-अलग निर्दिष्ट हैं।
public class Test { public static void main(String args[]) { Integer p = 5; Integer q = 20; Integer r =5; Short s = 5; System.out.println(p.equals(q)); System.out.println(p.equals(r)); System.out.println(p.equals(s)); } }
उत्पादन
false true false
तुलनीय और तुलनित्र के बीच अंतर Java
मैं अक्सर इनके बीच भ्रम देखता हूँ Java तुलनीय और तुलनित्र; यहाँ मुख्य अंतर है:
तुलना आधार | तुलनीय | तुलनित्र |
---|---|---|
विधि | तुलनीय प्रदान करता है compareTo() तत्वों को क्रमबद्ध करने की विधि Java. |
तुलनित्र प्रदान करता है compare() तत्वों को क्रमबद्ध करने की विधि Java. |
पैकेज | एक तुलनीय इंटरफ़ेस मौजूद है java.lang पैकेज. |
एक तुलनित्र इंटरफ़ेस मौजूद है java.util पैकेज. |
छंटाई का तर्क | सॉर्टिंग का तर्क उसी वर्ग में होना चाहिए जिस ऑब्जेक्ट को आप सॉर्ट करने जा रहे हैं। | वस्तुओं की विभिन्न विशेषताओं के आधार पर अलग-अलग सॉर्ट लिखने के लिए सॉर्टिंग का तर्क अलग-अलग वर्गों में होना चाहिए। |
क्लास ऑब्जेक्ट | जिस क्लास के ऑब्जेक्ट्स को आप सॉर्ट करना चाहते हैं, उसे Comparable इंटरफ़ेस लागू करना होगा। | जिस क्लास के ऑब्जेक्ट को आप सॉर्ट करना चाहते हैं, उसे तुलनित्र इंटरफ़ेस लागू करने की आवश्यकता नहीं है। |
अनुक्रमों को छांटना | यह एकल छँटाई अनुक्रम प्रदान करता है। | यह एकाधिक सॉर्टिंग अनुक्रम प्रदान करता है। |
छँटाई क्रम | यह विधि डेटा को प्राकृतिक सॉर्टिंग क्रम के अनुसार सॉर्ट कर सकती है। | यह विधि डेटा को अनुकूलित सॉर्टिंग क्रम के अनुसार सॉर्ट करती है। |
वर्ग | इससे मूल वर्ग प्रभावित होता है, अर्थात वास्तविक वर्ग बदल जाता है। | इससे मूल वर्ग पर कोई प्रभाव नहीं पड़ता, अर्थात वास्तविक वर्ग में कोई परिवर्तन नहीं होता। |
प्रयोग | कैलेंडर, रैपर क्लासेस, दिनांक और द्वारा एपीआई में अक्सर कार्यान्वित किया जाता है स्ट्रिंग। |
इसे तृतीय-पक्ष वर्गों के उदाहरणों को क्रमबद्ध करने के लिए क्रियान्वित किया गया है। |
को लागू करें | सभी रैपर क्लासेस और स्ट्रिंग क्लासेस तुलनीय इंटरफेस को कार्यान्वित करते हैं। | तुलनित्र के केवल कार्यान्वित वर्ग Collator और RuleBasedColator हैं। |
तुलनित्र और तुलनीय का उपयोग करते समय सर्वोत्तम अभ्यास Java
- जब तुलना विशिष्ट वर्ग के लिए मानक हो तो तुलनीय इंटरफ़ेस का उपयोग करें।
- आप लैम्बडास का उपयोग तुलनित्र के साथ कर सकते हैं।
- उपलब्ध कई कोर क्लासेस एक तुलनीय इंटरफ़ेस को कार्यान्वित करते हैं।
- सेट या मैप को सॉर्ट करते समय TreeSet और TreeMap का उपयोग करना संभव है।
- RSI
compareTo()
विधि तुलनित्र के साथ-साथ तुलनीय के साथ भी काम करती है। - तुलनित्र इंटरफ़ेस का उपयोग केवल तभी करें जब आपको अधिक लचीलेपन की आवश्यकता हो।
- RSI
compareTo()
यदि पहली वस्तु दूसरी से बड़ी है तो विधि धनात्मक पूर्णांक लौटाएगी, यदि वह छोटी है तो ऋणात्मक लौटाएगी, तथा यदि दोनों समान हैं तो शून्य लौटाएगी।
तुलनीय और तुलनित्र के बीच चयन कैसे करें
निष्कर्षतः, मेरा व्यावहारिक अनुभव यह सुझाव देता है कि तुलनीय और तुलनित्र का लाभ उठाना Java इससे डेटा सॉर्टिंग पर हमारा नियंत्रण काफी हद तक बढ़ जाता है, तथा प्रदर्शन और कार्यक्षमता दोनों में वृद्धि होती है।