自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

比較:HashMap和TreeMap

開發(fā) 后端
HashMap和TreeMap在開始接觸時(shí),很容易人云亦云變得混淆,從類的來源上就開始不清楚。文章從兩個(gè)類的基礎(chǔ)概念上進(jìn)行行對比,區(qū)分兩者的不同。

1.AbstractMap抽象類和SortedMap接口

AbstractMap抽象類:覆蓋了equals()和hashCode()方法以確保兩個(gè)相等映射返回相同的哈希碼。如果兩個(gè)映射大小相等、包含同樣的鍵且每個(gè)鍵在這兩個(gè)映射中對應(yīng)的值都相同,則這兩個(gè)映射相等。映射的哈希碼是映射元素哈希碼的總和,其中每個(gè)元素是Map.Entry接口的一個(gè)實(shí)現(xiàn)。因此,不論映射內(nèi)部順序如何,兩個(gè)相等映射會(huì)報(bào)告相同的哈希碼。

SortedMap接口:它用來保持鍵的有序順序。SortedMap接口為映像的視圖(子集),包括兩個(gè)端點(diǎn)提供了訪問方法。除了排序是作用于映射的鍵以外,處理SortedMap和處理SortedSet一樣。添加到SortedMap實(shí)現(xiàn)類的元素必須實(shí)現(xiàn)Comparable接口,否則您必須給它的構(gòu)造函數(shù)提供一個(gè)Comparator接口的實(shí)現(xiàn)。TreeMap類是它的***一份實(shí)現(xiàn)。

2.兩種常規(guī)Map實(shí)現(xiàn)(分別繼承自AbstractMap和SortedMap)

HashMap:基于哈希表實(shí)現(xiàn)。使用HashMap要求添加的鍵類明確定義了hashCode()和equals()[可以重寫hashCode()和equals()],為了優(yōu)化HashMap空間的使用,您可以調(diào)優(yōu)初始容量和負(fù)載因子。

(1)HashMap(): 構(gòu)建一個(gè)空的哈希映像

(2)HashMap(Map m): 構(gòu)建一個(gè)哈希映像,并且添加映像m的所有映射

(3)HashMap(int initialCapacity): 構(gòu)建一個(gè)擁有特定容量的空的哈希映像

(4)HashMap(int initialCapacity, float loadFactor): 構(gòu)建一個(gè)擁有特定容量和加載因子的空的哈希映像

TreeMap:基于紅黑樹實(shí)現(xiàn)。TreeMap沒有調(diào)優(yōu)選項(xiàng),因?yàn)樵摌淇偺幱谄胶鉅顟B(tài)。

(1)TreeMap():構(gòu)建一個(gè)空的映像樹

(2)TreeMap(Map m): 構(gòu)建一個(gè)映像樹,并且添加映像m中所有元素

(3)TreeMap(Comparator c): 構(gòu)建一個(gè)映像樹,并且使用特定的比較器對關(guān)鍵字進(jìn)行排序

(4)TreeMap(SortedMap s): 構(gòu)建一個(gè)映像樹,添加映像樹s中所有映射,并且使用與有序映像s相同的比較器排序

3.兩種常規(guī)Map性能

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

Treemap:適用于按自然順序或自定義順序遍歷鍵(key)。

4.總結(jié):HashMap通常比TreeMap快一點(diǎn)(樹和哈希表的數(shù)據(jù)結(jié)構(gòu)使然),建議多使用HashMap,在需要排序的Map時(shí)候才用TreeMap。

原文鏈接:http://blog.csdn.net/forwayfarer/article/details/2922918

責(zé)任編輯:周立方 來源: Forrest He的專欄
相關(guān)推薦

2022-09-13 14:44:40

HashMap哈希表紅黑樹

2015-09-16 09:10:27

Java源碼解析

2021-01-15 05:39:13

HashMapHashTableTreeMap

2024-12-31 08:17:34

2022-11-03 09:28:20

GoFrameGomap

2011-02-28 09:31:30

HashtableHashMap

2009-09-12 10:22:20

unixwindows操作系統(tǒng)

2009-06-24 16:16:30

JSF和Tapestr

2020-02-20 16:45:39

RabbitMQKafka架構(gòu)

2024-01-10 14:17:52

pytorchnumpy深度學(xué)習(xí)

2009-12-09 09:30:04

LinuxuClinux

2009-06-26 14:37:10

EJB和Spring

2011-03-03 09:39:36

2009-07-15 16:39:51

AWT和Swing

2009-07-10 11:07:18

Swing和SWT

2009-07-21 13:43:53

ASP和JSP比較

2010-07-14 16:48:02

Perl字符串比較

2011-03-29 13:25:12

ZabbixNagiosZenoss

2011-03-29 23:17:36

KindleAndroid硬件

2023-05-24 09:31:51

CGo
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號