溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

java中的HashMap與LinkedHashMap有什么區(qū)別

發(fā)布時(shí)間:2020-06-26 14:41:48 來源:億速云 閱讀:244 作者:Leah 欄目:編程語言

java中的HashMap與LinkedHashMap有什么區(qū)別?針對(duì)這個(gè)問題,這篇文章詳細(xì)介紹了相對(duì)應(yīng)的分析和解答,希望可以幫助更多想解決這個(gè)問題的小伙伴找到更簡單易行的方法。

HashMap

hashMap是最常用的Map,根據(jù)鍵的HashCode值存儲(chǔ)數(shù)據(jù),可以根據(jù)鍵直接獲取它的值,具有很快的訪問速度,遍歷時(shí)候的順序是完全隨機(jī)的。HashMap只允許一個(gè)鍵為Null,允許多個(gè)值為Null。

特性: 完全隨機(jī)

優(yōu)點(diǎn): 隨機(jī)訪問,取值速度快

缺點(diǎn): 多個(gè)線程同時(shí)寫HashMap可能導(dǎo)致數(shù)據(jù)不一致,如果需要同步,使用Collection的synchronizedMap方法或者使用ConcurrentHashMap

LinkedHashMap

LinkedHashMap是HashMap的一個(gè)子類,保存了記錄的插入順序,與HashMap的隨機(jī)遍歷不同,在用Iterator遍歷的時(shí)候,先得到的記錄肯定是先插入的,類似于python中的OrderedDict。

遍歷速度會(huì)比HashMap慢,不過有一種情況例外: 當(dāng)HashMap的容量很大,實(shí)際數(shù)據(jù)很少時(shí) , 因?yàn)镠ashMap的遍歷速度和它的容量有關(guān),而LinkedHashMap只跟實(shí)際數(shù)據(jù)量有關(guān)。

TreeMap

TreeMap實(shí)現(xiàn)SortMap接口,能夠?qū)⑺4娴挠涗洶存I排序,默認(rèn)是按鍵的升序排列,也可以指定排序的比較器,遍歷TreeMap的時(shí)候,得到的記錄是按照鍵排過序的。

根據(jù)數(shù)據(jù)選擇Map

一般情況下,我們用的最多的是HashMap,在Map中插入、刪除和定位元素,HashMap 是最好的選擇。但如果您要按自然順序或自定義順序遍歷鍵,那么TreeMap會(huì)更好。如果需要輸出的順序和輸入的相同,那么用LinkedHashMap可以實(shí)現(xiàn),它還可以按讀取順序來排列。

關(guān)于java中的HashMap與LinkedHashMap有什么區(qū)別問題的解答就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關(guān)注億速云行業(yè)資訊頻道了解更多相關(guān)知識(shí)。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI