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