关于hashmap源码的各个参数和属性

关于hashmap源码的各个参数和属性

 

                   1.hashmap的各个参数                            

1.DEFAULT_INITIAL_CAPACITY

缺省table大小(也就是说table长度为指定时table的默认值)

2.MAXIMUM_CAPACITY

table最大长度

3.DEFAULT_LOAD_FACTOR

缺省负载因子大小(默认为0.75)

4.TREEIFY_THRESHOLD=8

树化阈值(也就是说table的node中的链表长度超过这个阈值的时候,该链表会变成树)

5.UNTREEIFY_THRESHOLD=6

树降级成为链表的阈值(也就是说table的node中的树长度低于这个阈值的时候,树会变成链表)

6.MIN_TREEIFY_CAPACITY=64

树化的另一个参数,就是当hashmap中的node的个数大于这个值的时候,hashmap中的有些链表才会变成树。

这里纠正一个误区,并不是说hashmap中的某个node链表长度大于8就一定会变成树,而是说整个hashmap的node数量大于64,node的链表长度大于8才会变成树

 

                   2.hashmap的各个属性                           

 1.transient Node<K,V>[] table;

哈希表

2.transient Set<map.Entry<K,V>> entrySet;

 

3.transient int size;

当前哈希表中元素个数

4.transient int modCount;

当前哈希表结构修改次数(比如插入或者删除元素,但是比如hasp相同,覆盖不算)

5.int threshold;

扩容阈值,当你的hashmap中的元素个数超过这个阈值,便会发生扩容。(为什么要进行扩容,因为不扩容哈希表中链表的长度便会过长,查找复杂度便会上升)

其中,threshold = capacity * loadFactor

6.final float loadFactor

负载因子

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值