Ⅰ Java中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;
TreeMap:基於紅黑二叉樹的NavigableMap的實現,線程非安全,不允許null,key不可以重復,value允許重復,存入TreeMap的元素應當實現Comparable介面或者實現Comparator介面,會按照排序後的順序迭代元素,兩個相比較的key不得拋出classCastException。主要用於存入元素的時候對元素進行自動排序,迭代輸出的時候就按排序順序輸出