Java - TreeSet et hashCode()

J'ai une petite question sur le TreeSet collections et hashCode méthodes. J'ai un TreeSet et je suis ajoutant des objets, avant que je ajouter un objet, je vérifie pour voir si il existe dans le TreeSet à l'aide de la contient méthode.

J'ai 2 objets distincts, dont chacun produire une nette hashCode à l'aide de ma mise en œuvre de la méthode hashCode, exemple ci-dessous:

public int hashCode()
{
    int hash = 7;
    hash = hash * 31 + anAttribute.hashCode();
    hash = hash * 31 + anotherAttribute.hashCode();
    hash = hash * 31 + yetAnotherAttribute.hashCode();
    return hash;
}

Les hashCodes pour un run en particulier sont: 76126352 et 76126353 (les objets ne diffèrent que par la position d'un chiffre dans un attribut).

La méthode contains est de retourner true pour ces objets, même si les hashCodes sont différents. Des idées pourquoi? C'est vraiment déroutant et de l'aide serait vraiment appréciée.

OriginalL'auteur Gaz | 2009-09-24