关于HashMap和HashSet的认识

HashMap:

static final int DEFAULT_INITIAL_CAPACITY = 1 << 4;默认容量

static final int MAXIMUM_CAPACITY = 1 << 30;最大容量

static final float DEFAULT_LOAD_FACTOR = 0.75f;默认负载因子

树化条件:static final int TREEIFY_THRESHOLD = 8;static final int MIN_TREEIFY_CAPACITY = 64;

解树化条件:static final int UNTREEIFY_THRESHOLD = 6;

Node<K,V>[]table:真正存储元素的哈希表;

构造方法:

不带参数的:数组大小为0,在第一次put的时候初始化数组。

带参数的:

若传的初始容量大于最大容量则容量为最大容量,HashMap的最大容量保证是2的n次方,若不满足,用tableSizeFor方法将最大容量转为2的n次方。

tableSizeFor:返回最接近目标值的2次幂;

put方法:

利用hash方法使数据均匀分布;

先判断数组是否为空,若数组为空用resize方法处理一下,利用哈希函数计算出该关键字应放的位置,若有空则直接插入,如果当前的key已存在则替换,若不是则判断该结点是否为树类型,若是则利用尾插插入,同时要判断是否超过负载因子,若超过,要进行扩容,并对结点进行调整,判断该索引处结点是否符合新的结果,若不符合则删去。

HashSet:

第层与HashMap类似,都是哈希桶。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值