String類的hashcode計算

2021-08-08 11:40:12 字數 537 閱讀 6772

public

inthashcode()

hash = h;

}return h;

}

原始碼如上。

關於為什麼取31為權

主要是因為31是乙個奇質數,所以31*i=32*i-i=(i<<5)-i,這種位移與減法結合的計算相比一般的運算快很多。

比如:

string ss =

"abc";

string ss1 =

newstring("abc");

string ss2 =

"abc";

system.out.println(ss.

equals(ss1));//true

system.out.println(ss.

equals(ss2));//true

system.out.println(ss == ss1);//false

hashcode值一樣,物件不一定一樣

物件一樣,hashcode值一樣

String 類的實現(3)String類常用函式

1 2 include3 include4 include5 include 6 using namespace std 自己模擬實現的部分相關c string庫函式 8int my strlen const char p 9 17return count 18 19char my strcopy ...

string類的實現

參考c primer.string類的實現,清翔兔 06,jan.includeusing namespace std class string string void private char m data inline string string const char str inline st...

String類的實現

學習資料結構寫了乙個string的類,貼出來求指教 ifndef string h h define string h h include include include define defaultsize 128 class string maxsize為傳入引數的string string c...