标签:Node VB hash HashMap Windows value next key 源代码
用VB.net编写的Windows服务管理程序(堪称经典)全部源代码,提供了全部的服务功能,绝对值得下载。
文件:590m.com/f/25127180-498774168-58a1db(访问密码:551685)
以下内容无关:
-------------------------------------------分割线---------------------------------------------
想要理解HashMap底层数据的存储形式,底层原理,最好的形式就是读它的源码,但是说实话,源码的注释说明全是英文,英文不是非常好的朋友读起来真的非常吃力,我基本上看了差不多七八遍,还结合网上的一些解析,才觉得自己有点理解。
我先画了一个图,HashMap数据存储的结构图,先有个理解,再来看看下面的代码解析可能会好理解些。
HashMap的数据结构
image-20210403232719038
HashMap静态属性
/**
* The default initial capacity - MUST be a power of two.
* 默认的数组容量16
*/
static final int DEFAULT_INITIAL_CAPACITY = 1 << 4; // aka 16
/**
* 最大的容量
*/
static final int MAXIMUM_CAPACITY = 1 << 30;
/**
* The load factor used when none specified in constructor.
* 负载因子,用于扩容,当数组的容量大于等于 0.75*DEFAULT_INITIAL_CAPACITY时,就要扩容
*/
static final float DEFAULT_LOAD_FACTOR = 0.75f;
/**
* 每个桶中数据结构转变为树的链表长度界限,当链表长度为为8时,转成红黑树
*/
static final int TREEIFY_THRESHOLD = 8;
/**
* 当树的结点等于小于等于6时,又转会链表
*/
static final int UNTREEIFY_THRESHOLD = 6;
static final int MIN_TREEIFY_CAPACITY = 64;
存储的对象
/**
* Basic hash bin node, used for most entries. (See below for
* TreeNode subclass, and in LinkedHashMap for its Entry subclass.)
*/
static class Node<K,V> implements Map.Entry<K,V> {
final int hash;
final K key;
V value;
Node<K,V> next;
Node(int hash, K key, V value, Node<K,V> next) {
this.hash = hash;
this.key = key;
this.value = value;
this.next = next;
}
……省略
}
标签:Node,VB,hash,HashMap,Windows,value,next,key,源代码 来源: https://blog.csdn.net/weixin_43322764/article/details/117912579
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。