hashset不能往集合中放置相同的元素.
而如何判斷往集合中放置的元素是否相同,則是通過object類的兩個 hashcode()和equals()方法來確定的.具體說明如下:
具體的判斷過程為:當使用hashset時,hashcode()方法首先就會被呼叫來判斷已在hashset中的物件的hash code值是否和新新增物件的hash code值一樣。如果不一樣,則直接加進去; 若一樣,則還必須進一步處理,再呼叫這個物件的equals()方法來比較這兩個物件,若equals方法返回的是true,則不將新物件新增進去,若是false則新增進去。
這是因為 hashcode 相同的物件, 不一定用equals方法比較就會返回ture .這就是hash 桶的原則.
但是在程式設計中,如果
equal()來比較兩物件一樣,則hashcode()的結果應該一樣。 而且equal()比較兩物件不一樣,但是它們的hashcode()返回值可能一樣,也可能不一定。
往hashset裡面存的時候一定是先判斷hash code 值,如果不一樣,則直接把該物件加入到集合中,這個原理跟 hashmap, hashtable一樣,必須實現hashcode()和equals()兩個方法.
remap的那些事
月14日 今天還在看啟動 看到target.c這裡。先說說target.c的職責。target.c檔案包含和目標初始化相關的 如remap設定 系統時鐘設定和儲存器加速模組設定等,以及irq和fiq的異常處理空函式。好吧,這裡 看到了remap就好好查資料把它搞清楚咯!其實我前面看過這個了,只是人上...
AfxWinMain的那些事
afxwinmain函式原形如下 去掉了原來的很多沒用的注釋和累贅 cpp view plain copy print?int afxapi afxwinmain afxwininit函式 建立當前應用程式主線程 initinstance函式 內部通過create 函式來完成視窗的註冊,建立更新和顯...
void 的那些事
參考 void 是一種特殊的指標型別,可用於存放任意物件的位址。舉個例子 int p 0,pi p void pv p pv pd 但是一旦某個位址放到了void pv中,就不能利用 pv進行操作了 void 中存放的是未知物件的位址,所以無法操作該指標所指向的內容,但是可以對該指標進行操作,比如賦...