मुझे ओवररेडिन बराबर का सही उपयोग करने के लिए ArrayList प्राप्त करने में कोई समस्या है। समस्या यह है कि मैं केवल एक कुंजी क्षेत्र के लिए परीक्षण करने के लिए बराबर का उपयोग करने की कोशिश कर रहा हूं, और सही क्षेत्र के साथ किसी ऑब्जेक्ट के अस्तित्व के परीक्षण के लिए ArrayList.contains() का उपयोग कर रहा हूं। यहाँ एक उदाहरणArrayList ओवरराइड का उपयोग नहीं कर रहा है
public class TestClass {
private static class InnerClass{
private final String testKey;
//data and such
InnerClass(String testKey, int dataStuff) {
this.testKey =testKey;
//etc
}
@Override
public boolean equals (Object in) {
System.out.println("reached here");
if(in == null) {
return false;
}else if(in instanceof String) {
String inString = (String) in;
return testKey == null ? false : testKey.equals(inString);
}else {
return false;
}
}
}
public static void main(String[] args) {
ArrayList<InnerClass> objectList = new ArrayList<InnerClass>();
//add some entries
objectList.add(new InnerClass("UNIQUE ID1", 42));
System.out.println(objectList.contains("UNIQUE ID1"));
}
}
क्या चिंता मुझे यह है कि न केवल मैं उत्पादन पर झूठे हो रही है, लेकिन मैं भी "यहाँ तक पहुँच" उत्पादन नहीं मिल रहा है।
क्या किसी के पास कोई विचार है कि इस ओवरराइड को पूरी तरह से अनदेखा क्यों किया जा रहा है? क्या ओवरराइड और आंतरिक कक्षाओं के साथ कुछ सूक्ष्मता है जो मुझे नहीं पता?
संपादित करें: साइट के साथ समस्याएं होने के कारण मैं उत्तर को चिह्नित नहीं कर सकता। त्वरित प्रतिक्रिया के लिए धन्यवाद: हां मेरे हिस्से पर एक निरीक्षण है कि यह स्ट्रिंग है। असमान thta कहा जाता है, मेरा कस्टम नहीं। मुझे लगता है कि यह अब
धन्यवाद। नए InnerClass() के बारे में यह सुझाव वास्तव में भी सहायक था। :) – Sufian
मेरी राय में indexOf का कार्यान्वयन अन्य तरीकों से होना चाहिए: elementData [i] .equals (o) ... – marcolopes