教育行業(yè)A股IPO第一股(股票代碼 003032)

全國咨詢/投訴熱線:400-618-4000

Hashmap與Hashtable有什么區(qū)別?【Java面試題】

更新時間:2020年09月29日10時24分 來源:傳智播客 瀏覽次數(shù):

(1)問題分析

考官主要考核對于兩個map的區(qū)別。

(2)核心答案講解:

相同點:

HashMap和Hashtable都是存儲“鍵值對(key-value)”的散列表,而且都是采用 拉鏈法實現(xiàn)的。

存儲的思想都是:通過table數(shù)組存儲,數(shù)組的每一個元素都是一個Entry;而 一個 Entry就是一個單向鏈表,Entry鏈表中的每一個節(jié)點就保存了key- value鍵值對數(shù)據(jù)。

不同點:

1) 繼承和實現(xiàn)方式不同

2)線程安全不同

3)對null值的處理不同

4) 支持的遍歷種類不同

5) 通過Iterator迭代器遍歷時,遍歷的順序不同

6)容量的初始值 和 增加方式都不一樣

7) 添加key-value時的hash值算法不同

(3)問題擴展

HashTable中hash數(shù)組默認大小是11,增加的方式是 old*2+1;HashMap中 hash數(shù)組的默認大小是16,而且一定是2的指數(shù);

擴容的臨界點是加載因子loadFactor>0.75,其中l(wèi)oadFactor=size/capaticy

(4)使用場景

在多線程中,我們可以自己對HashMap進行同步,也可以選擇ConcurrentHashMap。當HashMap和Hashtable都不能滿足自己的需求時,還可以考慮新定義一個類,繼承或重新實現(xiàn)散列表;當然,一般情況下是不需要的了。


猜你喜歡

Java swing是做什么的?有什么作用?

什么是APM系統(tǒng)?APM的基本原理介紹

什么是動態(tài)代理?兩種常用的動態(tài)代理方式 

傳智播客Java高級軟件工程師課程 

0 分享到:
和我們在線交談!