java中的TreeMap和HashMap的區別和聯絡:

來源:互聯網
上載者:User

標籤:


1.什麼是map?
在資料結構中,map是由一組索引值對(key,value)來儲存資料的一種資料結構模型。

2.集合一般提供兩種常規的Map實現,一種是HashMap,另一種是TreeMap,下面將具體分析這兩種map的實現:
HashMap:基於雜湊表實現。使用HashMap要求添加的鍵類明確定義了hashCode()和equals()[可以重寫hashCode()和equals()],為了最佳化HashMap空間的使用,您可以調優初始容量和負載因子。
(1)HashMap(): 構建一個空的雜湊映像
(2)HashMap(Map m): 構建一個雜湊映像,並且添加映像m的所有映射
(3)HashMap(int initialCapacity): 構建一個擁有特定容量的空的雜湊映像
(4)HashMap(int initialCapacity, float loadFactor): 構建一個擁有特定容量和載入因子的空的雜湊映像
TreeMap:基於紅/黑樹狀結構實現。TreeMap沒有調優選項,因為該樹總處於平衡狀態。
(1)TreeMap():構建一個空的映像樹
(2)TreeMap(Map m): 構建一個映像樹,並且添加映像m中所有元素
(3)TreeMap(Comparator c): 構建一個映像樹,並且使用特定的比較子對關鍵字進行排序
(4)TreeMap(SortedMap s): 構建一個映像樹,添加映像樹s中所有映射,並且使用與有序映像s相同的比較子排序

3.HashMap通過hashcode對其內容進行快速尋找,而 TreeMap中所有的元素都保持著某種固定的順序,
如果你需要得到一個有序的結果你就應該使用TreeMap(HashMap中元素的排列順序是不固定的)。

4.線程方面:HashMap 非安全執行緒 TreeMap 安全執行緒
在Java裡,安全執行緒一般體現在兩個方面:
     <1多個thread對同一個java執行個體的訪問(read和modify)不會相互幹擾,它主要體現在關鍵字synchronized。如ArrayList和Vector,HashMap和Hashtable
(後者每個方法前都有synchronized關鍵字)。如果你在interator一個List對象時,其它線程remove一個element,問題就出現了。

    <2每個線程都有自己的欄位,而不會在多個線程之間共用。它主要體現在java.lang.ThreadLocal類,而沒有Java關鍵字支援,如像static、transient那樣。

5.AbstractMap抽象類別和SortedMap介面
AbstractMap抽象類別:(HashMap繼承AbstractMap)覆蓋了equals()和hashCode()方法以確保兩個相等映射返回相同的雜湊碼。如果兩個映射大小相等、包含同樣的鍵且每個鍵在這兩個映射中對應的值都相同,則這兩個映射相等。映射的雜湊碼是映射元素雜湊碼的總和,其中每個元素是Map.Entry介面的一個實現。因此,不論映射內部順序如何,兩個相等映射會報告相同的雜湊碼。
SortedMap介面:(TreeMap繼承自SortedMap)它用來保持鍵的有序順序。SortedMap介面為映像的視圖(子集),包括兩個端點提供了存取方法。除了排序是作用於映射的鍵以外,處理SortedMap和處理SortedSet一樣。添加到SortedMap實作類別的元素必須實現Comparable介面,否則您必須給它的建構函式提供一個Comparator介面的實現。TreeMap類是它的唯一一份實現。

6.兩種常規Map效能
HashMap:適用於在Map中插入、刪除和定位元素。
Treemap:適用於按自然順序或自訂順序遍曆鍵(key)。

7.總結:HashMap通常比TreeMap快一點(樹和雜湊表的資料結構使然),建議多使用HashMap,在需要排序的Map時候才用TreeMap

java中的TreeMap和HashMap的區別和聯絡:

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.