सभी वस्तुओं की तुलना नहीं की जा सकती, लेकिन सभी वस्तुओं की समानता के लिए जाँच की जा सकती है। यदि और कुछ नहीं है, तो कोई यह देख सकता है कि स्मृति में दो वस्तुएं एक ही स्थान पर मौजूद हैं (संदर्भ समानता)।
compareTo()
दो Thread
वस्तुओं पर इसका क्या मतलब है ? एक धागा "दूसरे" से अधिक कैसे है? आप दो ArrayList<T>
एस की तुलना कैसे करते हैं ?
Object
अनुबंध पर लागू होता है सब जावा वर्गों। अगर एक वर्ग की तुलना उसके स्वयं के वर्ग के अन्य उदाहरणों से Object
नहीं की जा सकती है , तो उसे इंटरफ़ेस का हिस्सा होने की आवश्यकता नहीं हो सकती है।
जोशुआ बलोच "प्राकृतिक क्रम" के प्रमुख शब्दों का उपयोग करते हुए बताते हैं कि एक वर्ग क्यों लागू करना चाहता है Comparable
। जैसा कि ऊपर दिए गए मेरे उदाहरणों में उल्लेख किया गया है, हर वर्ग का स्वाभाविक आदेश नहीं है, इसलिए हर वर्ग को लागू नहीं करना चाहिए Comparable
और न ही Object
इसका compareTo
तरीका होना चाहिए ।
... compareTo
विधि में घोषित नहीं किया गया है Object
। ... यह करने के लिए चरित्र में समान है Object
के equals
विधि, सिवाय इसके कि यह सरल समानता तुलना के अलावा क्रम तुलना परमिट, और यह सामान्य है। लागू करने से Comparable
, एक वर्ग इंगित करता है कि उसके उदाहरणों में एक प्राकृतिक आदेश है ।
प्रभावी जावा, दूसरा संस्करण : जोशुआ बलोच। आइटम 12, पृष्ठ 62। एलिप्स अन्य अध्यायों और कोड उदाहरणों के संदर्भ हटाते हैं।
ऐसे मामलों के लिए जहां आप एक गैर- वर्ग पर एक आदेश देना चाहते हैं जिसमें Comparable
एक प्राकृतिक आदेश नहीं है, आप Comparator
इसे सॉर्ट करने में मदद करने के लिए हमेशा एक उदाहरण प्रदान कर सकते हैं ।