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的時間開銷就好上很多。
歡迎關注本站公眾號,獲取更多信息