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的时间开销就好上很多。
相关文章
相关标签/搜索