美文网首页
HashMap存储过程和扩容机制

HashMap存储过程和扩容机制

作者: Colors_boy | 来源:发表于2020-08-31 19:08 被阅读0次

    HashMap

    1. jdk1.8后,HashMap的底层实现是采用数组+链表或红黑树的数据结构。

    2. HashMap的存储过程:首先使用put(key,value)储存对象到HashMap中,可以使用get(key)从HashMap中获取对象。

    • 当HashMap获取键和值时,通过HashCode()计算key的哈希值,将键和值包装成Entry数组储存到HashMap中。
    • 若查找的哈希表位置为空,则直接储存。如果哈希表位置不为空,则利用equals方法比较它的key,结果为true则覆盖value。结果为false则以链表的方式接到后面。

    3. 当哈希表实际节点数达到容量的75%的时候需要调用resize方法进行扩容。扩容的过程:

    • HashMap的默认容量时16,负载因子为0.75。当HashMap储存程度达到容量的75%时,将会创建原来大小两倍的数组,并将数组重新hash放入新的bucket中,所以频繁的扩容会消耗性能。
    • 至于扩容到原来的两倍是为了避免内存碎片,提高运算速度,通过高位异或,提高散列度,降低冲突。

    相关文章

      网友评论

          本文标题:HashMap存储过程和扩容机制

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