मुझे कोई समस्या है जहां मैं फू ऑब्जेक्ट्स का ऐरेलिस्ट बनाता हूं, मैं बराबर विधि को ओवरराइड करता हूं, और मुझे बराबर विधि को कॉल करने के लिए शामिल विधि नहीं मिल सकती है। मैंने एक साथ बराबर और हैशकोड ओवरराइड करने का प्रयास किया है, लेकिन यह अभी भी काम नहीं करता है। मुझे यकीन है कि यह क्यों तर्कसंगत स्पष्टीकरण है, लेकिन मैं इस समय अपने स्वयं के लॉल पर इसे समझ नहीं सकता। मैं सिर्फ यह देखने का एक तरीका चाहता हूं कि सूची में निर्दिष्ट आईडी है या नहीं।।() विधि कॉल नहीं किया गया ओवरराइड बराबर विधि
यहाँ कुछ कोड है:
import java.util.ArrayList;
import java.util.List;
public class Foo {
private String id;
public static void main(String... args){
Foo a = new Foo("ID1");
Foo b = new Foo("ID2");
Foo c = new Foo("ID3");
List<Foo> fooList = new ArrayList<Foo>();
fooList.add(a);
fooList.add(b);
fooList.add(c);
System.out.println(fooList.contains("ID1"));
System.out.println(fooList.contains("ID2"));
System.out.println(fooList.contains("ID5"));
}
public Foo(String id){
this.id = id;
}
@Override
public boolean equals(Object o){
if(o instanceof String){
String toCompare = (String) o;
return id.equals(toCompare);
}
return false;
}
@Override
public int hashCode(){
return 1;
}
}
उत्पादन: झूठी झूठी झूठी
मैं एक साधारण जोड़ा हैश कोड, अभी भी काम नहीं करता है ... –
@ReidMac: मैं गलत था, यह 'बराबरी के बारे में है()' सममित नहीं किया जा रहा, मेरे संपादन पर एक नजर है। 'HashCode()' इस मामले में कोई संबंध नहीं है, लेकिन फिर भी आप इस सिद्धांत –
अजीब का पालन करना चाहिए कि हम इस 'नई फू (" ID1 ") का उपयोग करने की जरूरत है;' कस्टम उपयोग करने के लिए सम्मेलन विधि के बराबर होती है। इसके पीछे कोई कारण? – Dish