HashMap源码分析(一)

举报
知识浅谈 发表于 2022/10/18 09:12:02 2022/10/18
【摘要】 HashMap源码分析(一)

在这里插入图片描述

🍁 作者:知识浅谈,CSDN博客专家,阿里云签约博主,InfoQ签约博主,华为云云享专家
📌 擅长领域:全栈工程师、爬虫、ACM算法
💒 公众号:知识浅谈

HashMap源码分析(一)总结
正菜来了⛳⛳⛳

🎈HashMap中的变量

🍮DEFAULT_INITIAL_CAPACITY

static final int DEFAULT_INITIAL_CAPACITY = 1 << 4;
含义:这默认的初始容量为16.

🍮MAXIMUM_CAPACITY

static final int MAXIMUM_CAPACITY = 1 << 30;
含义:最大容量,如果一个更高的值由任何一个带参数的构造函数隐式指定时使用。必须是 2 <= 1<<30 的幂。

🍮DEFAULT_LOAD_FACTOR

含义:构造函数中未指定时使用的负载因子。
static final float DEFAULT_LOAD_FACTOR = 0.75f;

🍮TREEIFY_THRESHOLD

含义:使用树而不是列表的 bin 计数阈值。将元素添加到至少具有这么多节点的 bin 时,bin 将转换为树。该值必须大于 2 并且应该至少为 8,以便与树移除中关于在收缩时转换回普通 bin 的假设相吻合。就是把列表转换为树的时候的的节点数。
static final int TREEIFY_THRESHOLD = 8;

🍮UNTREEIFY_THRESHOLD

含义:在调整大小操作期间 untreeifying(拆分)bin 的 bin 计数阈值。应小于 TREEIFY_THRESHOLD,并且最多 6 以在移除时进行收缩检测,当树的节点数变为6的时候,树转化为节点。
static final int UNTREEIFY_THRESHOLD = 6;

🍮MIN_TREEIFY_CAPACITY

含义: 可对其进行树化的 bin 的最小表容量。 (否则,如果 bin 中有太多节点,则调整表的大小。)应至少为 4 TREEIFY_THRESHOLD 以避免调整大小和树化阈值之间的冲突。
static final int MIN_TREEIFY_CAPACITY = 64;
这个的含义是当Map中的数组中的个数小于64的时候是不能进行数组到树结构的转化的。只有Map中的元素个数超过了64才有可能链表转化为树形结构。

🍮Node<K,V>[] table;

含义:该表在首次使用时初始化,并根据需要调整大小。分配时,长度始终是 2 的幂。 (我们还在某些操作中允许长度为零,以允许当前不需要的引导机制。)

transient Node<K,V>[] table;

🍮Set<Map.Entry<K,V>> entrySet

含义:保存缓存的 entrySet()。请注意,AbstractMap 字段用于 keySet() 和 values()。
transient Set<Map.Entry<K,V>> entrySet;

🍮int size

含义:此映射中包含的键值映射的数量。
transient int size;

🍮int modCount;

含义: 此 HashMap 已被结构修改的次数 结构修改是指更改 HashMap 中的映射数量或以其他方式修改其内部结构(例如,重新散列)的那些。该字段用于使 HashMap 的 Collection-views 上的迭代器快速失败.,这个就是我们在遍历的时候,如果对hashMap进行修改,这个modCount就会发生改变的,就会抛出异常。
transient int modCount;

🍮int threshold;

含义:要调整大小的下一个大小值(容量负载因子)。

🍮float loadFactor;

含义:hash表的加载因子。
final float loadFactor;

🍚总结

以上就是关于HashMap中的成员变量的的部分解析,希望有所帮助。Written By 知识浅谈

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。