Retour de HashMap::containsKey()
Un petit truc que je ne comprends pas :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
|
static public final class A
{
private int n;
@Override
public boolean equals(Object o)
{
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
A a = (A) o;
return Math.abs(n - a.n) < 2;
}
@Override
public int hashCode()
{
return n;
}
public A(int n)
{
this.n = n;
}
}
HashMap<A, Boolean> m = new HashMap<>();
ArrayList<A> l = new ArrayList<>();
A a1 = new A(0);
A a2 = new A(1);
m.put(a1, false);
l.add(a1);
System.out.println(a1.equals(a2)); // true OK
System.out.println(m.containsKey(a2)); // false ???
System.out.println(l.contains(a2)); // true OK
for (A i : m.keySet()) trace(i.equals(a2)); // true OK
for (A i : l) trace(i.equals(a2)); // true OK |
Pourquoi HashMap::containsKey() me renvoie false :question: