2012-02-07 13 views
34

मैं कई ऑर्डरों में आया था जैसे तुलनीय उपयोग किया जाता है जब सरणी या संग्रह और कुल क्रम के लिए तुलनित्र को सॉर्ट करते समय प्राकृतिक ऑर्डरिंग की आवश्यकता होती है।प्राकृतिक ऑर्डरिंग और कुल ऑर्डरिंग के बीच अंतर

जो आपने सुना है उसका संस्करण एक ही अर्थ के साथ समान या अलग हो सकता है लेकिन आखिरकार यह दोनों (तुलनित्र और तुलनीय इंटरफेस) के बीच विशिष्ट कारकों में से एक है।

लेकिन, कहीं भी मुझे दो प्रकार के ऑर्डरिंग के बीच कोई अंतर नहीं मिल सका। अगर कोई इसे एक अच्छे उदाहरण के साथ समझा सकता है तो इसकी बहुत सराहना की जाएगी :)

उत्तर

25

कुल आदेश का अर्थ है कि सभी मूल्यों की तुलना अन्य सभी मूल्यों से की जा सकती है। उदाहरण के लिए, यदि आप BigDecimal और String का एक संग्रह है कि वहाँ कोई प्राकृतिक कुल आदेश है (लेकिन आप एक आविष्कार सकता है)

जावा में, प्राकृतिक आदेश JVM द्वारा प्रदान की आदेश के रूप में परिभाषित किया गया है। यह उन लोगों से मेल नहीं खा सकता है जो लोग मान सकते हैं प्राकृतिक आदेश है। जैसे स्ट्रिंग्स को ASCIIBetically क्रमबद्ध किया जाता है। जिसका अर्थ है Za से पहले आता है और 102 से पहले

http://docs.oracle.com/javase/7/docs/api/java/lang/Comparable.html

यह इंटरफ़ेस प्रत्येक वर्ग है कि यह लागू करता है की वस्तुओं पर कुल आदेश लगाता है। इस आदेश को कक्षा के प्राकृतिक क्रम के रूप में जाना जाता है, और वर्ग की तुलना करने के लिए विधि को इसकी प्राकृतिक तुलना विधि के रूप में जाना जाता है।

+2

** आपके द्वारा वास्तव में क्या मतलब है सभी मूल्यों की तुलना अन्य सभी मूल्यों से की जा सकती है। ** क्या आप इस पर और विस्तार कर सकते हैं? संग्रह में – AnV

+1

@AbhinavVutukuri आप कह सकते हैं कि कुछ तुलनीय हैं और अन्य नहीं हैं। सभी मूल्यों को हर दूसरे मूल्य के साथ तुलनीय होना चाहिए। –

4

प्राकृतिक ऑर्डरिंग एक डिफ़ॉल्ट कुल ऑर्डरिंग है। दोनों के बीच यह एकमात्र अंतर है।

+1

यही वह नहीं है जो मुझे नहीं मिला। यह मेरे लिए एक पहेली की तरह है। क्या आप कृपया बता सकते हैं कि डिफ़ॉल्ट रूप से – Nav

+0

पर इसका मतलब क्या है, यह _natural_: D – UmNyobe

+0

lol मुझे पता है, लेकिन जैसा कि मैंने कहा था कि जब आपने प्राकृतिक कारण कहा था तो यह समझ में नहीं आया था कि अर्थ मेरे लिए समझने के लिए संदिग्ध है :( – Nav

8

Total ordering एक सामान्य गणितीय अवधारणा है। यह प्रत्येक एक और सेट एक्स में के लिए कि में आंशिक आदेश से मुख्य रूप से अलग है, या तो "एक < = b" या "ख < = एक" सार्थक और सही हैं। जहां तक ​​जावा का संबंध है, इसका मतलब है कि दो Comparable उदाहरणों में से एक दूसरे के मुकाबले अधिक या बराबर होना चाहिए (यानी उनकी तुलना करने के लिए यह समझ में आता है)।

9

स्वाभाविक क्रम

यह हमारे संग्रह है कि हम उपयोग करते हैं, उदाहरण के लिए, कहते हैं, हम पात्रों आपत्ति है पर निर्भर करता है, तो प्राकृतिक ताकि उनके यूनिकोड मूल्यों, है संख्या के लिए प्राकृतिक व्यवस्था के रूप में हमेशा की तरह है, आरोही क्रम

तुलनात्मक इंटरफ़ेस- यह इंटरफ़ेस प्रत्येक वर्ग की वस्तुओं पर कुल क्रम लगाता है जो इसे लागू करता है। इस आदेश को कक्षा के प्राकृतिक क्रम के रूप में जाना जाता है, और वर्ग की तुलना करने के लिए विधि को इसकी प्राकृतिक तुलना विधि के रूप में जाना जाता है।

इस इंटरफ़ेस को लागू करने वाली ऑब्जेक्ट्स की सूचियां (और सरणी) को Collections.sort (और Arrays.sort) द्वारा स्वचालित रूप से सॉर्ट किया जा सकता है। इस इंटरफ़ेस को लागू करने वाले ऑब्जेक्ट्स को सॉर्ट किए गए मानचित्र या सॉर्ट किए गए सेट में तत्वों के रूप में उपयोग किया जा सकता है, बिना तुलनित्र निर्दिष्ट करने की आवश्यकता के।

public interface Comparable<T> { 

    /** 
    * Compares this object with the specified object for order. Returns a 
    * negative integer, zero, or a positive integer as this object is less 
    * than, equal to, or greater than the specified object. 
    */ 
    public int compareTo(T o); 
} 

तुलनाकारी इंटरफ़ेस:

इस इंटरफ़ेस एक आदेश संबंध है, जो एक सूची को सॉर्ट या किसी क्रमित सेट या नक्शे में व्यवस्था बनाए रखने के लिए इस्तेमाल किया जा सकता है प्रतिनिधित्व करता है। एक प्रकार के प्राकृतिक क्रम, या ऑब्जेक्ट ऑब्जेक्ट को ओवरराइड कर सकते हैं जो तुलनात्मक इंटरफ़ेस को लागू नहीं करता है।

एक तुलनात्मक कार्य, जो "वस्तुओं के कुछ संग्रह" पर कुल आदेश लगाता है। सॉर्टर्स को सॉर्ट ऑर्डर पर सटीक नियंत्रण की अनुमति देने के लिए सॉर्ट विधि (जैसे संग्रह .ॉर्ट) पर पारित किया जा सकता है। तुलनात्मक उपकरणों का उपयोग कुछ डेटा संरचनाओं (जैसे ट्रीसेट या ट्रीमैप) के क्रम को नियंत्रित करने के लिए भी किया जा सकता है।

public interface Comparator<T> { 
    /** 
    * Compares its two arguments for order. Returns a negative integer, 
    * zero, or a positive integer as the first argument is less than, equal 
    * to, or greater than the second. 
    */ 
    int compare(T o1, T o2); 

    boolean equals(Object obj); 
} 

Hope This helps you.      
6

महत्वपूर्ण बिंदु:प्राकृतिक आदेश के साथ अनुरूप होना चाहिए के बराबर होती है!

सारांश: प्राकृतिक क्रम एक पूर्ण क्रम है जो दिए गए वर्ग के लिए डिफ़ॉल्ट (अक्सर उपयोग किया जाता है) है और बराबर के साथ संगत है। कुल आदेश कोई आदेश है जहां सभी मूल्यों की तुलना अन्य सभी मूल्यों से की जा सकती है।

उदा। जब आप नई कक्षा तैयार करते हैं तो आप कक्षा के अंदर प्राकृतिक क्रम चुन सकते हैं। किसी भी अन्य आदेश हो सकता है उसके बाद ही कुल एक;)

+1

** आपके द्वारा वास्तव में क्या मतलब है सभी मूल्यों की तुलना अन्य सभी मूल्यों से की जा सकती है। ** क्या आप इस पर और विस्तार कर सकते हैं? – AnV

2

पर @ ब्रूनो के जवाब विस्तार से बता दें: एक आंशिक आदेश का एक उदाहरण विभाज्यता संबंध सकारात्मक संख्या के बीच है। यदि आप 5 और 15 की तुलना करते हैं, तो आप कह सकते हैं कि 5 15 का विभाजक है, और 15 5 का गुणक है। हालांकि, 3 और 5 तुलनीय नहीं हैं क्योंकि 3 न तो विभाजक है और न ही 5 का बहुमत है।

का कुल उदाहरणसंबंध से कम है, क्योंकि यदि आप दो अलग-अलग संख्याएं लेते हैं, तो उनमें से एक दूसरे से कम है। तो कोई भी मूल्य किसी अन्य मूल्य के साथ तुलनीय है।

प्राकृतिक आदेश की अवधारणा पर: यदि किसी प्रकार की वस्तुओं को क्रमबद्ध करने के लिए वास्तव में स्पष्ट रूप से स्पष्ट तरीका है, तो यह प्राकृतिक क्रम है। उदाहरण के लिए, स्ट्रिंग्स का प्राकृतिक क्रम वर्णमाला क्रम है, और संख्याओं का प्राकृतिक क्रम आरोही क्रम है, क्योंकि यह पहली पसंद है जिसे कोई भी सोचता है। हालांकि, कभी-कभी आप स्ट्रिंग्स को एक अलग तरीके से ऑर्डर करना चाहते हैं, उदा। 1-वर्ण वाले से लंबे समय तक लंबाई के अनुसार क्रमबद्ध करें। यह स्ट्रिंग्स पर एक संभावित कुल क्रम है, लेकिन प्राकृतिक नहीं है।

सभी वस्तुओं के लिए प्राकृतिक आदेश नहीं है। जैसे यदि आपके पास व्यक्ति वस्तुएं हैं, तो उन्हें ऊंचाई से क्रमबद्ध करना एक संभावित कुल क्रम है, लेकिन इसलिए उन्हें उम्र के अनुसार क्रमबद्ध किया जा रहा है ... इनमें से कोई भी दूसरे की तुलना में अधिक स्पष्ट नहीं है, यही कारण है कि कोई प्राकृतिक आदेश नहीं है।

संबंधित मुद्दे