Bonjour,
je souhaite actuellement développer ma propre fonction de hachage. Après des recherches sur internet pour en comprendre le fonctionnement, je me suis aperçu que chaque caractère pouvait etre affecté à un int et que cela donnais une valeur différente pour chaque caractère
Par conséquent, je me demande si une fonction de hachage ne pourrait pas simplement être écrite comme ci-dessous
Sur les quelques tests que j'ai effectué cela me donne bien une valeur différente pour chaque String que j'ai testée mais j'ai l'impression que la fonction est trop simple...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 int fonctionHash(String s){ int h = 0; for(int i = 0; i<s.length();i++){ h += s.charAt(i); } return h; }
Pourriez vous donc me dire si cela est une fonction de hachage correcte ou non? Si non je voudrais également savoir pourquoi elle n'est pas correcte?
Par ailleurs j'ai trouvé sur le net une fonction faite a peu près de la même manière sauf dans la boucle (voir ci-dessous) :
Pourquoi dans cet exemple les developpeurs n'ont ils pas simplement pris la valeur de s.charAt(i) comme je l'ai fait?
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 int fonctionHash(String s){ int B = 256; (en reference a une puissance de 2?) int N = 311; (en reference à un nombre premier?); int h = 0; for(int i = 0; i<s.length();i++){ h = (h*B + s.charAt(i)) % N; } return h; }
merci
Partager