में पाया जाता है मैं कुछ हैशकोड + बराबर + मैप सामान के साथ गड़बड़ कर रहा था और कुछ पाया ... अजीब।'बराबर()' झूठा रिटर्न देता है, फिर भी ऑब्जेक्ट
टुकड़ा इस प्रकार है:
java.util.Map<Obj,String> map = new java.util.HashMap<Obj,String>();
Obj o1 = new Obj("1");
Obj o11 = new Obj("1");
Obj o2 = new Obj("2");
map.put(o1,"val 1");
map.put(o11,"val 2");
map.put(o2,"val 3");
p("size = " + map.size()); // obviously 3
p(map.get(new Obj("1"))); // obviously null
p(map.get(o1)); // ...
अंतिम पंक्ति अजीब हिस्सा है:
class Obj {
String n;
Obj(String n) {this.n = n;}
public int hashCode() {return 0;}
public boolean equals(Object o) {return false;} // no instance of this class
// equals any other instance
}
तो मैं कुछ इस तरह से किया था। अंतिम पंक्ति val 1
लौटाती है। कैसे? equals
विधि हमेशा false
देता है। क्या ऐसा इसलिए है क्योंकि ==
ऑपरेटर का उपयोग equals
से पहले किया जाता है?
किसी भी अंतर्दृष्टि के लिए धन्यवाद।