2011-06-25 25 views
17

तुलनाकर्ता के अंदर वापसी मूल्य वास्तव में क्या मतलब है?एक तुलनाकर्ता से वापसी प्रकार

उदाहरण के लिए

:

class TreeSetDemo 
{ 
    public static void main(String arg[]) 
    { 
     TreeSet t=new TreeSet(new MyComparator()); 
     t.add(new Integer(20)); 
     t.add(new Integer(10)); 
     t.add(new Integer(30)); 
     t.add(new Integer(100)); 
     System.out.println(t); 
    }  

    class MyComparator implements Comparator 
    {  
     public int compare(Object o1, Object o2) 
     { 
      return 0; 
     } 
    } 
} 

तो वापसी प्रकार 1 तो इसकी वास्तव में

लौटने [20, 10, 30, 100]

वापसी प्रकार है है -1 फिर यह वास्तव में

[100, 30, 10, 20]

तो वापसी प्रकार 0 है तो इसकी वास्तव में लौटने

[20]

कृपया मुझे बताओ कि यह क्या दर्शाता है?

+3

आमतौर पर '0' इंगित करता है' == ',' 1' इंगित करता है '>' और '-1' इंगित करता है '<' –

+2

"1", "-1" और "0" प्रकार नहीं हैं, लेकिन मान हैं। –

+1

इसके प्रलेखन में कौन सा तुलनित्र बहुत अच्छी तरह से निर्धारित किया जाता है। बस एक प्रश्न पूछने से पहले थोड़ा पढ़ने का प्रयास करें। – Dunes

उत्तर

48

वापसी value (नहीं type, प्रकार int है) फोन करने वाले (बात डेटा छँटाई) बताता है:

-1 : o1 < o2 
0 : o1 == o2 
+1 : o1 > o2 

तुम हमेशा के लिए एक ही मूल्य (, -1 ओ, 1) वापस नहीं आ जाते तुलनित्र, इसके इनपुट के बावजूद, तो आप इसे सही तरीके से उपयोग नहीं कर रहे हैं। आपको पास किए गए मानों पर लौटाए गए मूल्य को आधारभूत करने की आवश्यकता है। विचार यह है कि डेटा संरचना (या सॉर्टर) किसी भी समय दो तत्वों को ऑर्डर करने की आवश्यकता होती है, यह पता लगाने के लिए कि उन्हें किस क्रम में रखा जाए।

यह ध्यान देने योग्य है कि सकारात्मक/नकारात्मक पूर्णांक मान (-1, +1) 1 होने की आवश्यकता नहीं है, वे कोई सकारात्मक/नकारात्मक संख्या हो सकते हैं। -1/+ 1 लौटने के लिए यह सामान्य बात है।

0

यह सॉर्ट एल्गोरिदम के बारे में है जिसकी तुलना करने की आवश्यकता है।

सही:

class MyComparator implements Comparator<Integer> { 
    public int compare(Integer o1, Integer o2) { 
     return o1.complare(o2); 
    } 
} 
1

आप भ्रमित वापसी प्रकार और वापसी-मूल्य हैं। वापसी प्रकार int है। वापसी मान documentation में वर्णित है:

एक नकारात्मक पूर्णांक, शून्य, या एक सकारात्मक पूर्णांक पहला तर्क से कम है, के बराबर है, या अधिक से अधिक दूसरे से के रूप में देता है।

1

Comparator documentation - रिटर्न: एक नकारात्मक पूर्णांक, शून्य, या एक सकारात्मक पूर्णांक पहले तर्क के रूप में की तुलना में कम, के बराबर है, या दूसरे से अधिक है।

0

इस तुलनित्र के आधार पर आप कैसे क्रमबद्ध करना चाहते हैं इस पर निर्भर करते हुए आपको तुलनित्र में कुछ तर्क देने की आवश्यकता है।आपका तुलनित्र केवल रिटर्न 0 जिसका अर्थ है बराबर

class MyComparator implements Comparator { 

    public int compare(Object o1, Object o2) { 
     // TODO Auto-generated method stub 
     return o1.compareTo(o2); 
    } 
} 
+1

मुझे नहीं लगता कि यह संकलित होगा, क्योंकि 'ऑब्जेक्ट' तुलनीय नहीं है। –

1

रास्ता तुलनित्र यहाँ का लाभ उठाया है गलत है, लेकिन अपने संदेह स्पष्ट करने के लिए क्यों केवल [20] आईडी लिखा जा रहा है जब वापसी मान 0 है ...

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

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