1. 程式人生 > >hashmap和treemap什麼區別?底層資料結構是什麼?

hashmap和treemap什麼區別?底層資料結構是什麼?

HashMap:陣列方式儲存key/value,執行緒非安全,允許null作為key和value,key不可以重複,value允許重複,不保證元素迭代順序是按照插入時的順序,key的hash值是先計算key的hashcode值,
然後再進行計算,每次容量擴容會重新計算所以key的hash值,會消耗資源,要求key必須重寫equals和hashcode方法。
預設初始容量16,載入因子0.75,擴容為舊容量乘2,查詢元素快,如果key一樣則比較value,如果value不一樣,則按照連結串列結構儲存value,就是一個key後面有多個value;
hashcode和equals:https://www.cnblogs.com/skywang12345/p/3324958.html


TreeMap:基於紅黑二叉樹的NavigableMap的實現,執行緒非安全,不允許null,key不可以重複,value允許重複,存入TreeMap的元素應當實現Comparable介面或者實現Comparator介面,
會按照排序後的順序迭代元素,兩個相比較的key不得丟擲classCastException。主要用於存入元素的時候對元素進行自動排序,迭代輸出的時候就按排序順序輸出