String
जावा में समानता के लिए परीक्षण करते समय मैंने हमेशा इसका उपयोग किया है equals()
क्योंकि मेरे लिए यह इसके लिए सबसे प्राकृतिक तरीका है। आखिरकार, इसका नाम पहले से ही कहता है कि यह क्या करने का इरादा है। हालाँकि, मेरे एक सहयोगी ने हाल ही में मुझे बताया कि मुझे compareTo() == 0
इसके बजाय उपयोग करना सिखाया गया था equals()
। यह अप्राकृतिक लगता है (जैसा compareTo()
कि आदेश देने के लिए है और समानता के लिए तुलना नहीं) और यहां तक कि कुछ हद तक खतरनाक है (क्योंकि compareTo() == 0
जरूरी नहीं कि सभी मामलों में समानता हो, हालांकि मुझे पता है कि यह String
मेरे लिए है)।
वह नहीं जानता था कि क्यों उसे के compareTo()
बजाय का उपयोग करने के equals()
लिए सिखाया गया था String
, और मैं भी कोई कारण नहीं मिल सका। क्या यह वास्तव में व्यक्तिगत स्वाद की बात है, या विधि के लिए कोई वास्तविक कारण है?
compareTo() == 0
जरूरी नहीं कि सभी मामलों में समानता हो"। यह बिल्कुल सही है! यह वास्तव में जावा एपीआई विनिर्देशों में वाक्यांश "बराबरी के अनुरूप" का अर्थ है, उदाहरण के लिए तुलनीय वर्ग विनिर्देश में। उदाहरण के लिए, स्ट्रिंग की तुलना विधि बराबरी के साथ संगत है, लेकिन BigDecimal के तुलना विधि है असंगत बराबरी के साथ।
.equalsIgnoreCase()
अगर यह उचित है, तो सबसे तेज़ तुलना.equals()
है।