1. 程式人生 > >HashMap原始碼,問map原始碼問題?以及LinkedHashMap,TreeMap不同

HashMap原始碼,問map原始碼問題?以及LinkedHashMap,TreeMap不同

  • HashMap 中的 put 方法。put 時先判斷是否為空,不為空就計算 hash 值,再使用 indexFor()方法計算陣列下標。該方法僅有一條語句:h & (length - 1),這除了取模提高運算效率之外,還會使資料均勻分佈在table陣列上,充分利用空間。
  • LinkedHashMap 可以認為是 HashMap + LinkedList。即使用 HashMap 操作資料結構,又使用 LinkedList 維護插入元素的先後順序。 LinkedHashMap 繼承自 HashMap。
  • LinkedHashMap 相比於 HashMap 還額外保證了遍歷順序。解決了 HashMap 的無序問題。如果額外要保證統計效能或者對 Key 按照一定規則排序,那麼可以使用 TreeMap。TreeMap 為 CRUD 操作提供了 logN 的時間開銷。相比於 HashMap 和 LinkedHashMap,從儲存效能來說,TreeMap要差些;但從統計效能上,TreeMap logN的時間開銷就好上不