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

为 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;

}


慕无忌1623718
浏览 136回答 2
2回答

梵蒂冈之花

这在很大程度上取决于您的数据通常如何彼此不同。你可以编写这个哈希码函数:return&nbsp;arr.Length;如果您的大多数数组具有不同的大小,它可能完全适合。或者,如果您的数组通常具有完全不同的内容,您可以使用前两项。注意:循环整个数组并执行比与另一个数组的值进行比较更复杂的事情是没有意义的。为什么?因为哈希码仅用于性能优化。所以它应该比Equals.&nbsp;并Equals比较所有值。当数组大小不同时,Equals不会循环。相反,它在比较后立即返回Length。尝试在哈希码函数中击败它。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java