最近用到了這三種集合類,由於不是很熟練,所以想整理下。而且前段時間面試,一般情況下面試官喜歡問HashMap和Hashtable的主要區別,其用意是想問被面試者這倆那個是線程安全的。但是HashMap和Hashtable之間的差別不止線程安全那麼簡單。兩者的主要區別如下:
相同點:都實現了Map接口,都是輕量級的實現。兩者採用的Hash算法幾乎一樣,所以性能不會有很大的差異。
1.語法上面的區別:
1)HashMap允許鍵值爲空,Hashtable不允許。
2)HashMap包含了containsvalue和containsKey,不包含有contains。
2.安全方面的區別
HashTable支持線程安全的,而HashMap不支持線程同步,是非線程安全的。因此,HashMap相對來說效率可能會高於Hashtable。
3.源碼級別的區別
Hashtable,hash數組默認的大小是11,增加的方式是old*2+1,而HashMap中,hash數組的默認大小是16,而且一定是2的指數。
相較於HashMap和HashTable,TreeMap是利用紅黑樹來實現的,實現了SortMap接口,能夠對保存的記錄根據鍵進行排序。所以一般需要排序的情況下是選擇TreeMap來進行。