class Point{
int x, y, l;
Point(int x, int y, int l){
this.x =x;
this.y =y;
this.l=l;
}
@Override
public int hashCode() {
return y;
}
@Override
public boolean equals(final Object obj) {
if(this == obj) return true;
if(!(obj instanceof Point)) return false;
Point p = (Point) obj;
return this.x == p.x && this.y == p.y;
}
}
TreeMap<Point,Integer> sortedMap = new TreeMap<>((p1, p2)-> p1.l-p2.l);
sortedMap.put(new Point(4,5,0),0);
sortedMap.put(new Point(5,5,0),6);
System.out.println(sortedMap.size()); -> Output: 1
System.out.println((new Point(4,5,0)).equals(new Point(5,5,0))); -> Output -> False.
मैंने दोनों हैशकोड को ओवरलोड किया है, कक्षा में विधि बराबर है। मुझे लगता है कि डालने विधि को यह निर्धारित करने के लिए बराबर विधि का उपयोग करना चाहिए कि क्या वही वस्तु निकलती है या नहीं। लेकिन यह उम्मीद के रूप में काम नहीं कर रहा है।ट्रीमैप पुट अपेक्षित काम नहीं कर रहा है
मुझे यकीन नहीं है कि मेरा हैशैप आकार क्यों है 1. अगर मुझे हैशप गलत तरीके से काम कर रहा है तो कृपया मुझे बताएं। इस कोड में बग की पहचान करने में मेरी मदद करें?
आपकी समानता जांच 'p1.l - p2.l' क्यों है? –
आप अपने चर 'sortedSet' को क्यों कॉल कर रहे हैं जब यह सेट नहीं है लेकिन नक्शा है? –
@MuratK .: यह एक समानता जांच नहीं है - यह एक आदेश है। –