美文网首页
HashMap的初始长度为什么是16

HashMap的初始长度为什么是16

作者: 写代码的杰西 | 来源:发表于2020-03-10 14:27 被阅读0次

当put方法调用,将entry放入数组的时候,需要计算entry的索引index。在hashmap中,index的计算公式为:

hashcode(key)&(length-1)

有一个与逻辑运算。 这里的length如果是16,那么就是与15,15的二进制是1111。1111和任何数与运算,结果都是他本身。所以这里如果hashcode的值是均匀分布的,算出来的index就是均匀分布在0-15之间。2的幂次方-1,二进制都是1,所以扩容的时候也是以2的幂次方扩容。
如果长度不是16,length-1的二进制就全是1组成的。 10010,这样的话有些index会永远算出来,降低了空间的利用率。
所以HashMap给初始值、扩容的时候,容器大小都是2的幂次方

相关文章

  • HashMap的初始长度为什么是16

    当put方法调用,将entry放入数组的时候,需要计算entry的索引index。在hashmap中,index的...

  • HashMap原理概述

    HashMap原理概述 在1.7中,HashMap内部通过数组+链表的形式实现。数组的初始长度是16,会在第一次p...

  • HashMap,SparseArray,Arraymap分析

    1 HashMap的原理可以看美团点评的文章: HashMap 初始化一个长度为16的数组,数组的每个元素又是一个...

  • 《数据结构与算法之美》笔记—HashMap

    先抛出问题,根据问题在源码中寻找答案: 1.HashMap默认的初始长度是多少?为什么这么规定?2.HashMap...

  • HashMap(1)

    HashMap的原理和问题: First. 基本原理 Second. HashMap的初始长度...

  • 数据结构-hasMap

    1.hashMap中put方法的操作流程哈希因子:0.75树化容量:64数组初始容量:16链表最大长度:8红黑树最...

  • HashMap总结

    总结: 1.HashMap的默认大小为16,即桶数组的默认长度为16; 2.HashMap的默认装载因子是0.75...

  • HashMap LinkHashMap HashTable 区别

    HashMap LinkHashMap HashTable 特性 HashMap 线性不安全 初始大小16,负载因...

  • HashMap初始容量剖析

    问题: 确定只装载10个元素, HashMap初始容量多少是最佳? 答案: 16 目的: 防止HashMap频繁扩...

  • HashMap的长度为什么必须是2的N次方

    我们看HashMap的源码可以知道,HashMap的长度强制为2的n次方 那为什么HashMap的长度L需要是2的...

网友评论

      本文标题:HashMap的初始长度为什么是16

      本文链接:https://www.haomeiwen.com/subject/repwdhtx.html