asked on

I have the following function that calculates the has of on object. There are four integer member variables and 2 String variables. The two member variables have been changed to integers now. so, how would I calculate the hash now. Is it simply doing the following is enough. Why string is handled especially. I am not familiar with how this works, can someone explain it. Thank you very much.

hash = hash * 17 + intMember1;

hash = hash * 17 + intMember2;

hash = hash * 17 + intMember3;

hash = hash * 17 + intMember4;

hash = hash * 17 +strMember1; <- This is integer now

hash = hash * 17 + strMember2;<- This is integer now

The code is actually in AS3. But, I modified here.

hash = hash * 17 + intMember1;

hash = hash * 17 + intMember2;

hash = hash * 17 + intMember3;

hash = hash * 17 + intMember4;

hash = hash * 17 +strMember1; <- This is integer now

hash = hash * 17 + strMember2;<- This is integer now

The code is actually in AS3. But, I modified here.

```
public int hashValueOf()
{
int hash = 1;
hash = hash * 17 + intMember1;
hash = hash * 17 + intMember2;
hash = hash * 17 + intMember3;
hash = hash * 17 + intMember4;
hash = hash * 31 + calculateHash(strMember1);
hash = hash * 31 + calculateHash(strMember2);
return hash;
}
public int calculateHash(String input)
{
int h = 0;
int len = input.length;
for (var i:int = 0; i < len; i++)
{
h = 31 * h + input.charCodeAt(i);
}
return h;
}
```

JavaC++C