This content is protected, please login and enroll in the course to view this content!
2 Comments
Pokstar
14 de maio de 2019
Olá professor Isidro, tudo bem? Deu um trabalhinho mas achei e entendi o cálculo de hashCode para Strings.
Vou deixar um comentário com o cálculo como curiosidade e uma forma deu consultar futuramente essa anotação, hehehe.
Abraços!
int valorHash = 0;
String s = “teste”;
for ( int i = 0 ; i < v.length ; i–){
valorHash += (int) (s[ i ] * Math.pow(31,v.length-1-i) );
}
/*Exemplo de resultado:
't' * (31^4) + 'e' * (31^3) + 's' * (31^2) + 't' * (31^1) + 'e' * (31^0) =
116 * (31^4) + 101 * (31^3) + 115 * (31^2) + 116 * (31^1) + 101 * (31^0)
valorHash = 110251539
*/
Show de bola Pokstar!!! É bem isso mesmo… a implementação interna do hash para strings leva em consideração o valor de cada letra e também um valor numérico para dificultar coincidências 😀
2 Comments
Olá professor Isidro, tudo bem? Deu um trabalhinho mas achei e entendi o cálculo de hashCode para Strings.
Vou deixar um comentário com o cálculo como curiosidade e uma forma deu consultar futuramente essa anotação, hehehe.
Abraços!
int valorHash = 0;
String s = “teste”;
for ( int i = 0 ; i < v.length ; i–){
valorHash += (int) (s[ i ] * Math.pow(31,v.length-1-i) );
}
/*Exemplo de resultado:
't' * (31^4) + 'e' * (31^3) + 's' * (31^2) + 't' * (31^1) + 'e' * (31^0) =
116 * (31^4) + 101 * (31^3) + 115 * (31^2) + 116 * (31^1) + 101 * (31^0)
valorHash = 110251539
*/
Show de bola Pokstar!!! É bem isso mesmo… a implementação interna do hash para strings leva em consideração o valor de cada letra e também um valor numérico para dificultar coincidências 😀