为 char 数组定义哈希码方法的最佳方法。有没有更好的方法来实现我们自己的 hascode() 方法来最小化冲突?char arr1[]={'a','b','c'};char arr2[]={'b','a','c'};char arr3[]={'c','a','b'};int hashcode() { int p=31; int n=arr1.length; int hash=1; for(int i=0;i<n;i++) { hash=31*hash+(int)arr1[i]; } return hash;}
2 回答
梵蒂冈之花
TA贡献1900条经验 获得超5个赞
这在很大程度上取决于您的数据通常如何彼此不同。
你可以编写这个哈希码函数:
return arr.Length;
如果您的大多数数组具有不同的大小,它可能完全适合。
或者,如果您的数组通常具有完全不同的内容,您可以使用前两项。
注意:循环整个数组并执行比与另一个数组的值进行比较更复杂的事情是没有意义的。为什么?因为哈希码仅用于性能优化。所以它应该比Equals
. 并Equals
比较所有值。
当数组大小不同时,Equals
不会循环。相反,它在比较后立即返回Length
。尝试在哈希码函数中击败它。
添加回答
举报
0/150
提交
取消