美文网首页
HashMap 扩容机制

HashMap 扩容机制

作者: 青木石 | 来源:发表于2016-10-03 21:44 被阅读2810次

data:2016-10-3 8:54


HashMap 执行原理

内部采用数组与链表的结合形式。 当put时,首先根据key的hash值(调用hashcode方法),来确定该key的value应该位于数组哪个位置。当hash值相同时,调用equal方法判断是否为同一个数据,相同则省略(hashmap不能存一样的值,应该是覆盖关系),不同时,则加入该数组中链表的开头(例如刚开始3号数组中的链表里面有数据 a->b->c, 之后put的一个数据d的key的hash值一样,但是equal 不一样,这时d添加到链表的开头,此时链表的内容即为 d->a->b->c)


hashmap原理.jpg

为了使数据的查询效率提高,所以每个链表最好只有一个值,这样就不需要再去遍历链表了。hash算法采用2^n容量,可以最大避免碰撞几率。
static int indexFor(int h, int length) { return h & (length-1); }

Paste_Image.png

扩容机制: loadfactor 扩容因子。当数据容量超过 当前最大容量*loadfactor时,容量自动扩大2倍,并将当前的数据重新放入新的hashmap中。所以初始的定义大小为2^n的大小最佳。

相关文章

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

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

  • HashMap原理

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

  • HashMap 的扩容机制

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

  • HashMap知识

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

  • HashMap 扩容机制

    data:2016-10-3 8:54 HashMap 执行原理 内部采用数组与链表的结合形式。 当p...

  • HashMap扩容机制

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

  • HashMap扩容机制

    介绍一下几个名词:容量:capacity ,默认16。加载因子:loadFactor,默认是0.75阈值:thre...

  • HashMap的扩容机制:JDK1.7,JDK1.8

    HashMap的扩容机制:JDK1.7,JDK1.8 - cosmos_lee - CSDN博客HashMap的扩...

  • HashMap源码解析 (HashMap类-resize方法)

    扩容方法 resize( ) 扩容机制: 什么时候才需要扩容当 HashMap 中的元素个数超过数组大小(数组长度...

  • 近期学习安排

    一、Java基础篇 1.HashMap底层数据结构,扩容机制 2.ArrayList 底层数据结构,扩容机制 3....

网友评论

      本文标题:HashMap 扩容机制

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