Un petit truc que je ne comprends pas :
Pourquoi HashMap::containsKey() me renvoie false
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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![]()
Partager