2012-02-29 23 views
11

equals() विधि Object कक्षा से सभी जावा संग्रह कक्षाओं के लिए उपलब्ध है। इस विधि को Comparator इंटरफ़ेस में भी घोषित किया गया है, तो इस विधि को तुलनात्मक रूप से घोषित करने का उद्देश्य क्या है? किस मामले में इसका इस्तेमाल होता है और कैसे?तुलनित्र इंटरफेस में बराबर() विधि का उपयोग?

उत्तर

0

-मुझे घोषित तुलनाकारी एक और वस्तु (तर्क) की तुलना में है

10

तुलनाकारी में इस विधि घोषित करने के उद्देश्य क्या है?

मुझे लगता है कि इस तथ्य पर प्रकाश डाला के डिजाइनर की तरह है कि Comparator.equals() किसी भी कक्षा कि इंटरफ़ेस को लागू पर कुछ additional requirements आरोपित करता है:

साथ ही, इस विधि true लौट सकते हैं केवल यदि निर्दिष्ट वस्तु भी एक है तुलनित्र और यह इस तुलनित्र के रूप में एक ही आदेश लागू करता है। इस प्रकार, comp1.equals(comp2) का अर्थ है कि प्रत्येक ऑब्जेक्ट संदर्भ o1 और o2 के लिए sgn(comp1.compare(o1, o2))==sgn(comp2.compare(o1, o2))

विधि का उपयोग यह निर्धारित करने के लिए किया जा सकता है कि दो अलग तुलनाकर्ता एक ही आदेश को लागू करते हैं या नहीं।

4
जावाडोक

नोट से

कि यह है हमेशा सुरक्षित Object.equals (वस्तु) को ओवरराइड करने के लिए नहीं। हालांकि, इस विधि को ओवरराइड करने से, कुछ मामलों में, प्रदर्शन को प्रोग्रामों को यह निर्धारित करने की अनुमति देकर दो अलग-अलग तुलनाकर्ता एक ही ऑर्डर लगा सकते हैं।

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

आम तौर पर इसका बहुत कम उपयोग होता था, लेकिन जब बहुत बड़े संग्रह को सॉर्ट करना होता है तो यह ऐसा कुछ है जिसे आप देखना चाहते हैं।

0

यह ऑब्जेक्ट के बराबर विधि का एक अति-सवार रूप है जो आपको बताता है कि क्या दो वस्तुएं समान तुलनित्र प्रकार हैं।

5

मुझे लगता है कि मुख्य कारण यह स्पष्ट करना है कि equals विधि Comparator ही के परीक्षण के लिए है। जब आप इसके बारे में सोचते हैं तो यह स्पष्ट होता है, लेकिन क्या मैं कल्पना कर सकता हूं कि कुछ लोग equals(Object) (किसी भी तरह) compare(T, T) विधि से संबंधित रूप से संबंधित होने की उम्मीद कर सकते हैं।

यह कुछ आम-ज्ञान दिशानिर्देशों के दस्तावेज़ीकरण की अनुमति देता है जब दो तुलनाकर्ताओं को बराबर के रूप में देखा जा सकता है।

किसी भी तरह से, इंटरफेस में equals(Object) विधि की उपस्थिति दस्तावेज उद्देश्यों के लिए है।

-2

आपके प्रश्न के अनुसार मुझे लगता है कि स्ट्रिंग में कनवर्ट करने के बाद वस्तुओं की तुलना करने के लिए इसका उपयोग किया जाता है। ऑब्जेक्ट क्लास eqlas विधियों दोनों को चेक करें ऑब्जेक्ट eqls हैं या नहीं और प्रतिस्पर्धा विधि हैक ऑब्जेक्ट डेटा जैसे Hello.eqlas ("हैलो")

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