JDK源码学习-HashMap\Hashtable

1、HashMap初始化容量

// Find a power of 2 >= initialCapacity
int capacity = 1;
while (capacity < initialCapacity)
capacity <<= 1;

this.loadFactor = loadFactor;
threshold = (int)(capacity * loadFactor);
table = new Entry[capacity];

注:初始容量是一个不小于initialCapacity且为2的倍数的数值,默认为16。
2、HashMap扩容resize()

if (size++ >= threshold)
resize(2 * table.length);

注:以2倍形式扩容
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
3、Hashtable初始化

public Hashtable() {
this(11, 0.75f);
}

默认初始容量为11,加载因子为0.75
提供带参数的构造函数,初始容量区别于HashMap,没有2倍的限制。
4、Hashtable是同步的。
5、Hashtable不能存储null对象

// Make sure the value is not null
if (value == null) {
throw new NullPointerException();
}

6、Hashtable扩容

int newCapacity = oldCapacity * 2 + 1;

7、计算数组index的方法

index = (hash & 0x7FFFFFFF) % tab.length;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值