jdk1.8 HashMap底层数据结构:深入解析为什么jdk1.8 HashMap的容量一定要是2的n次幂

    一、jdk1.8中,对“HashMap的容量一定是2的n次幂”做了严格控制

      1.默认初始容量

      2.使用HashMap的有参构造函数来自定义容量的大小(保证容量是2的n次幂)

      3.扩容:同样需要保证扩容后的容量是2的n次幂( jdk1.8 HashMap.resize()扩容方法的源码解析

    二、为什么HashMap的容量一定要是2的n次幂?或者说,保证“HashMap的容量一定是2的n次幂”有什么好处?

      1.关系到元素在桶中的位置计算问题

       2.关系到扩容后元素在newCap中的放置问题

        2.1 源码解析

        2.2 深入分析(含图解)

 

一、jdk1.8中,对“HashMap的容量一定要是2的n次幂”做了严格控制

  1.默认初始容量:

/** * The default initial capacity - MUST be a power of two.(默认初始容量——必须是2的n次幂。) */ static final int DEFAULT_INITIAL_CAPACITY = 1 << 4; // aka 16(16 = 2^4)

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wppwsp.html