Java: les objets dupliqués sont ajoutés à définir?

Si j'exécute le code ci-dessous, alors la sortie est de 2, ce qui signifie que le set contient 2 éléments. Cependant je pense que ce set contient 1 depuis deux objets sont égaux basé sur hashcode() valeur ainsi que .equals() méthode.
Semble évident erreur dans ma compréhension ?

package HELLO;

import java.util.HashSet;
import java.util.Set;

public class Test {

    public static void main(String[] args) throws Exception {
        Set<Alpha> s = new HashSet<Alpha>();
        Alpha a1 = new Alpha();
        Alpha a2 = new Alpha();
        s.add(a1);
        s.add(a2);
        System.out.println(s.size());
    }
}   

class Alpha {
    int a = 10;

    public int hashcode() {
        return a;
    }

    public boolean equals(Object obj) {
        return (obj instanceof Alpha && ((Alpha) obj).a == this.a);
    }

    public String toString() {
        return "Alpha : " + a;
    }
}

source d'informationauteur snow_leopard