nie no takie proste to napisalam sobie ale dziala tylko dla wartosci skrajnych:
public boolean equals(Object o) {
boolean state = false;
if(o instanceof Klucz){
Klucz k = (Klucz)o;
System.out.println("k.MIN "+k.MIN);
System.out.println("this.MIN "+this.MIN);
System.out.println("this.MAX "+k.MAX);
if((k.MIN >= this.MAX) && (k.MIN <= this.MAX)){
state = true;
}
}
return state;
}
no i np dla System.out.println(hm.get(new Klucz(31,31))); dostane 20, czyli ok, zas dla System.out.println(hm.get(new Klucz(23,23))); dostane 10. ale jak juz wezme sobie wartosci srodkowe np: System.out.println(hm.get(new Klucz(32,32))); to lipa, null.
Wypisalam sobie co tam sie pokolei tworzy w tym equals i jakas kaszana:
public class Test2 {
public static void main(String[] args) {
HashMap hm = new HashMap();
Klucz k1 = new Klucz(23,27);
Klucz k2 = new Klucz(31,34);
hm.put(k1, "10");
hm.put(k2, "20");
System.out.println(hm.get(new Klucz(32,32)));
}
}
przy takim equals jak podalam dostane:
k.MIN 23
this.MIN 31
this.MAX 27
k.MIN 31
this.MIN 32
this.MAX 34
k.MIN 23
this.MIN 32
this.MAX 27
null
to bez sensu, wartosci sie mieszaja :/ albo sie nie mieszaja, bo przeciez this mi zwroci to aktualnego obiektu. wiec-no jak w tym equals dobrac sie do wartosci MIN/MAX z klucza?
jeju, mam nadz ze pisze jeszcze w miare logicznie..