美文网首页
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存储过程和扩容机制

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

  • HashMap原理

    本文参考: HashMap的扩容机制---resize()HashMap的扩容及树化过程 HashMap的内部是使...

  • 2020-04-03 Java HashMap的实现原理的文章

    HashMap的扩容机制---resize() HashMap底层实现原理 扩容机制 Java中HashMap的实现原理

  • HashMap 的扩容机制

    每个 Java 程序员都得了解 HashMap 的扩容机制美团一面:说说 HashMap 的扩容机制吧看完这篇,如...

  • HashMap的基本原理与它的线程安全性

    一、HashMap是线程不安全的(了解一下HashMap源码中的使用的存储结构和它的扩容机制) 注:jdk1.8源...

  • Java-HashMap 精讲原理篇

    本文涉及HashMap的: HashMap的简单使用 HashMap的存储结构原理 HashMap的扩容方法原理 ...

  • HashMap知识

    HashMap的扩容机制---resize() - 割肉机 - 博客园 Java源码分析:HashMap 1.8 ...

  • HashMap源码解析

    HashMap 存储 key-value 映射关系 HashMap中key值可以为空 HashMap扩容策略为每次...

  • Java:HashMap(JDK1.8)

    在本篇主要整理一下 1.8 的 HashMap 进行分析,主要从以下方面: 存储结构 扩容机制 基本属性 下面列出...

  • HashMap扩容机制

    HashMap如何扩容的 HashMap里面数据存储数量=threshold,而threshold是由tableS...

网友评论

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

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