Я использую структуру, содержащую 3 целых числа, в качестве ключа к моей карте. Кажется, мой HashMap ищет ключи, основанные на REFERENCE, а не ключи, основанные на VALUE.
Есть ли способ это исправить?
Ниже Я ожидаю, что b и d будут правдой!
public class Triple{
public int kid;
public int x;
public int y;
public Triple(int a, int b, int c){
kid=a;
x=b;
y=c;
}
public Triple(Triple notAcopy, int next, boolean reverse){
kid=notAcopy.kid;
x=notAcopy.x + next;
if (reverse)
y=notAcopy.y-next;
else
y=notAcopy.y+next;
}
public String toString(){
return "("+kid+", "+x+", "+y+") ";
}
}
HashMap<Triple, Boolean> forward;
forward = new HashMap<Triple, Boolean>();
Triple a = new Triple(1,4,10);
Triple b = new Triple(1,4,10);
Triple c = new Triple(1,5,11);
Triple d = new Triple(1,5,11);
forward.put(a, true);
forward.put(c, true);
System.out.println("a\t"+forward.containsKey(a));
System.out.println("b\t"+forward.containsKey(b));
System.out.println("c\t"+forward.containsKey(c));
System.out.println("d\t"+forward.containsKey(d));
Output:
a true
b false
c true
d false