为了账号安全,请及时绑定邮箱和手机立即绑定

为字符数组定义哈希码方法的最佳方法

为字符数组定义哈希码方法的最佳方法

慕无忌1623718 2021-10-27 19:05:22
为 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。尝试在哈希码函数中击败它。


查看完整回答
反对 回复 2021-10-27
  • 2 回答
  • 0 关注
  • 135 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信