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

全國(guó)咨詢/投訴熱線:400-618-4000

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

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

(1)問(wèn)題分析

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

(2)核心答案講解:

相同點(diǎn):

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

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

不同點(diǎn):

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

2)線程安全不同

3)對(duì)null值的處理不同

4) 支持的遍歷種類不同

5) 通過(guò)Iterator迭代器遍歷時(shí),遍歷的順序不同

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

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

(3)問(wèn)題擴(kuò)展

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

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

(4)使用場(chǎng)景

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


猜你喜歡

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

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

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

傳智播客Java高級(jí)軟件工程師課程 

0 分享到:
和我們?cè)诰€交談!