Bonjour,

pour un projet, j'ai besoin de générer un identifiant unique (de type int) en fonction de 3 paramètres (3 entiers).


Pour cela, j'ai utilisé la génération automatique de code de netbeans (quand il génère le code pour la méthode hashCode.

Voici donc le code généré :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
@Override
public int hashCode()
{
    int hash = 5;
    hash = 53 * hash + this.typeOperation;
    hash = 53 * hash + this.typeObjet;
    hash = 53 * hash + this.idObjet;
    return hash;
}
Or, par acquis de conscience, et histoire de m'initier aux tests unitaire, j'ai fait un test pour voir ci c'était vraiment unique (pour typeOperation allant de 0 à 10, typeObjet allant de 0 à 40 et idObjet allant de 0 à 9999)

Or, si on prend :

typeOperation = 0 - typeObjet = 0 - idObjet = 53, hashCode = 744438

mais si on prend :

typeOperation = 0 - typeObjet = 1 - idObjet = 0, alors hashCode vaut aussi 744438.

Donc le hashCode n'est pas exactement ce que je cherche, ou alors est mal codé.

En fait hashCode n'est pas ce que je veux, vu que çà doit être utilisé avec equals() et donc je gère pas l'ordre des opérateurs.

Quel code je doit coder pour avoir un vrai identifiant unique en fonction de ces 3 paramètres et de l'ordre de ces paramètres ?

Merci