Hashmap 與 treemap的區別
相同點:
HashMap非執行緒安全,TreeMap非執行緒安全(此設計執行緒安全) 都繼承了AbstractMap 不同點:
HashMap:基於雜湊表實現。使用HashMap要求新增的鍵類明確定義了hashCode()和equals()(可以重寫hashCode()和equals()),為了優化HashMap空間的使用,您可以調優初始容量和負載因子。 TreeMap:基於紅黑樹實現。TreeMap沒有調優選項,因為該樹總處於平衡狀態。 HashMap :適用於在Map中插入、刪除和定位元素。Treemap:適用於按自然順序或自定義順序遍歷鍵(key)。 HashMap通常比TreeMap快一點(樹和雜湊表的資料結構使然),建議多使用HashMap,在需要排序的Map時候才用TreeMap。 HashMap的結果是沒有排序的。TreeMap實現SortMap介面,能夠把它儲存的記錄根據鍵排序,預設是按鍵值的升序排序,也可以指定排序的比較器,當用Iterator遍歷TreeMap時,得到的記錄是排過序的。HashMap裡面存入的鍵值對在取出的時候是隨機的,它根據鍵的HashCode值儲存資料,根據鍵可以直接獲取它的值,具有很快的訪問速度。在Map中插入、刪除和定位元素,HashMap是最好的選擇。TreeMap取出來的是排序後的鍵值對。但如果您要按自然順序或自定義順序遍歷鍵,那麼TreeMap會更好。 其他方面 1、實現 TreeMap:SortMap介面,基於紅黑樹 HashMap:基於雜湊散列表實現 2、儲存 TreeMap:預設按鍵的升序排序 HashMap:隨機儲存 3、遍歷 TreeMap:Iterator遍歷是排序的 HashMap:Iterator遍歷是隨機的 4、效能損耗 TreeMap:插入、刪除 HashMap:基本無 5、鍵值對 TreeMap:鍵、值都不能為null HashMap:只允許鍵、值均為null 6、安全 TreeMap:非併發安全Map HashMap:非併發安全Map 7、效率 TreeMap:低 HashMap:高 一般情況下我們選用HashMap,因為HashMap的鍵值對在取出時是隨機的,其依據鍵的hashCode和鍵的equals方法存取資料,具有很快的訪問速度,所以在Map中插入、刪除及索引元素時其是效率最高的實現。而TreeMap的鍵值對在取出時是排過序的,所以效率會低點。