成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

驚呆面試官的回答:HashMap和TreeMap的區別

開發 前端
HashMap是基于哈希表+數組來實現的,而TreeMap是基于紅黑樹實現的。使用HashMap需要鍵對象明確定義了hashCode()和equals()這兩個方法,而且為了優化HashMap空間的使用,可以調整初始容量大小和擴容。

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

1、兩者區別

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

圖片

關于HashMap和TreeMap的區別,我從以下4個方面來分析:

圖片

1)數據結構方面

HashMap是基于哈希表+數組來實現的,而TreeMap是基于紅黑樹實現的。

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

TreeMap沒有大小設置選項,因為,紅黑樹結構總是處于平衡狀態。

圖片

2)效率方面

HashMap比TreeMap的性能更高。

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

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

圖片

3)線程安全方面

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

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

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

圖片

4)應用場景方面

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

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

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

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

2、總結

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

基礎

哈希圖

樹狀圖

Definition

HashMap是基于哈希表的Map接口實現。

TreeMap是Map接口的基于Tree結構的實現。

Interface Implements

HashMap實現Map, Cloneable和Serializable接口。

TreeMap實現NavigableMap, Cloneable和Serializable接口。

空鍵/值

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

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

同質/異質

HashMap允許異構元素, 因為它不對鍵執行排序。

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

Performance

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

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

數據結構

HashMap類使用哈希表。

TreeMap在內部使用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的理解。

責任編輯:武曉燕 來源: Tom彈架構
相關推薦

2015-08-24 09:00:36

面試面試官

2025-03-10 11:40:00

前端開發HTML

2025-03-10 00:00:00

property?attributeHTML

2025-03-12 00:00:00

2019-11-26 08:24:13

TCP擁塞控制網絡協議

2021-10-22 08:37:13

消息不丟失rocketmq消息隊列

2021-05-12 08:20:53

開發

2021-03-22 17:20:48

MYSQL開發數據庫

2020-06-19 15:32:56

HashMap面試代碼

2021-05-10 08:01:12

BeanFactoryFactoryBean容器

2013-05-23 10:19:01

TreeMap

2020-12-03 06:30:11

內部類對象變量

2019-11-21 08:40:44

面試官優化性能

2023-02-17 08:10:24

2015-08-13 10:29:12

面試面試官

2024-04-03 15:33:04

JWTSession傳輸信息

2024-09-19 08:42:43

2025-03-07 08:44:47

Typescriptiinterfacetype

2021-03-24 10:25:24

優化VUE性能

2024-09-25 12:26:14

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 日韩精品一区二区不卡 | 亚洲永久精品国产 | 日韩av在线一区二区 | 日本电影一区二区 | 亚洲 欧美 精品 | 国内自拍第一页 | 999re5这里只有精品 | 日韩视频国产 | 欧美精品成人一区二区三区四区 | 日韩欧美在线不卡 | 国产精品毛片久久久久久 | 午夜视频在线 | 人人射人人插 | 在线精品观看 | 欧美1区| 国产精品美女久久久 | 不卡的av电影 | 九九精品在线 | 中文字幕在线观看国产 | 人人射人人 | 国产精品日韩欧美一区二区三区 | 精品久久久久久亚洲综合网站 | 国产成人精品一区二区三区在线观看 | 亚洲在线视频 | 亚洲成av人影片在线观看 | 免费a网 | 亚洲综合大片69999 | 理论片87福利理论电影 | 成人国产免费视频 | 日韩av啪啪网站大全免费观看 | 97人人澡人人爽91综合色 | 国产精品一区久久久 | 国产午夜三级一区二区三 | 国产精品久久久久久久久久久免费看 | 国产精品成人国产乱一区 | 国产高清久久久 | 国产精品乱码一区二三区小蝌蚪 | 国产精品福利久久久 | 久久青青| 噜噜噜噜狠狠狠7777视频 | 91在线视频免费观看 |