日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
驚呆面試官的回答:HashMap和TreeMap的區(qū)別

? 前幾天,有一位粉絲在直播間問了我這樣一個問題,說HashMap和TreeMap有什么區(qū)別。今天,我給大家分享一下我的理解。

成都創(chuàng)新互聯(lián)主要從事網(wǎng)站設計制作、成都做網(wǎng)站、網(wǎng)頁設計、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務。立足成都服務卓尼,十載網(wǎng)站建設經(jīng)驗,價格優(yōu)惠、服務專業(yè),歡迎來電咨詢建站服務:028-86922220

1、兩者區(qū)別

我們知道不管是HashMap還是TreeMap,都是通過對象來對對象進行索引的Map集合。我們把用來索引的對象叫做Key,而索引對應的對象叫做Value。這就是我們平時說的鍵值對。它們的類關(guān)系如圖所示:

關(guān)于HashMap和TreeMap的區(qū)別,我從以下4個方面來分析:

1)數(shù)據(jù)結(jié)構(gòu)方面

HashMap是基于哈希表+數(shù)組來實現(xiàn)的,而TreeMap是基于紅黑樹實現(xiàn)的。

使用HashMap需要鍵對象明確定義了hashCode()和equals()這兩個方法,而且為了優(yōu)化HashMap空間的使用,可以調(diào)整初始容量大小和擴容。

TreeMap沒有大小設置選項,因為,紅黑樹結(jié)構(gòu)總是處于平衡狀態(tài)。

2)效率方面

HashMap比TreeMap的性能更高。

HashMap的時間復雜度是O(1),它是通過哈希函數(shù)計算的哈希地址。

而TreeMap主要是保證數(shù)據(jù)平衡,時間復雜度是O(log2 n)。

3)線程安全方面

HashMap和TreeMap都是非線程安全的。

如果在多線程并發(fā)情況下建議使用ConcurrentHashMap;

如果既要保證線程安全又要保證順序,可以使用 Collections.synchronizedMap()方法轉(zhuǎn)化為線程安全的集合。

4)應用場景方面

HashMap是無序的,而TreeMap是有序的。

TreeMap適用于按自然順序或自定義順序遍歷鍵的場景。

HashMap適用于在Map中插入、刪除和定位元素。

日常開發(fā)建議多使用HashMap,只有在需要排序的時候才使用TreeMap。

2、總結(jié)

最后,我把HashMap和TreeMap的更多詳細區(qū)別,都整理在這張表中了,需要的小伙伴可以在我的個人主頁中獲取。

基礎

哈希圖

樹狀圖

Definition

HashMap是基于哈希表的Map接口實現(xiàn)。

TreeMap是Map接口的基于Tree結(jié)構(gòu)的實現(xiàn)。

Interface Implements

HashMap實現(xiàn)Map, Cloneable和Serializable接口。

TreeMap實現(xiàn)NavigableMap, Cloneable和Serializable接口。

空鍵/值

HashMap允許單個null鍵和多個null值。

TreeMap不允許使用空鍵, 但可以具有多個空值。

同質(zhì)/異質(zhì)

HashMap允許異構(gòu)元素, 因為它不對鍵執(zhí)行排序。

由于排序, TreeMap允許將齊次值作為鍵。

Performance

HashMap比TreeMap更快, 因為它為諸如get()和put()之類的基本操作提供了O(1)的恒定時間性能。

與HashMap相比, TreeMap速度較慢, 因為它為大多數(shù)操作(如add(), remove()和contains())提供O(log(n))的性能。

數(shù)據(jù)結(jié)構(gòu)

HashMap類使用哈希表。

TreeMap在內(nèi)部使用Red-Black樹, 這是一種自平衡二進制搜索樹。

Comparison Method

它使用Object類的equals()方法比較鍵。Map類的equals()方法將其覆蓋。

它使用compareTo()方法比較鍵。

Functionality

HashMap類僅包含諸如get(), put(), KeySet()等基本功能。

TreeMap類具有豐富的功能, 因為它包含如下功能:tailMap(), firstKey(), lastKey(), pollFirstEntry(), pollLastEntry()。

元素順序

HashMap不維護任何順序。

元素以自然順序(升序)排序。

Uses

當我們不需要按排序順序的鍵值對時, 應使用HashMap。

當我們需要按排序(升序)順序的鍵值對時, 應使用TreeMap

好了,以上就是我對HashMap和TreeMap的理解。


網(wǎng)站標題:驚呆面試官的回答:HashMap和TreeMap的區(qū)別
URL網(wǎng)址:http://www.dlmjj.cn/article/cohjdee.html