亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

為字符數組定義哈希碼方法的最佳方法

為字符數組定義哈希碼方法的最佳方法

慕無忌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 關注
  • 160 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號