1. 程式人生 > >HashMap和Hashtable以及TreeMap的區別

HashMap和Hashtable以及TreeMap的區別

    最近用到了這三種集合類,由於不是很熟練,所以想整理下。而且前段時間面試,一般情況下面試官喜歡問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來進行。