当在实例化HashMap实例时,如果给定了initialCapacity,由于HashMap的capacity都是2的幂,因此这个方法用于找到大于等于initialCapacity的最小的2的幂(initialCapacity如果就是2的幂,则返回的还是这个数)。
下面分析这个算法:
首先,为什么要对cap做减1操作。int n = cap - 1;
这是为了防止,cap已经是2的幂。如果cap已经是2的幂, 又没有执行这个减1操作,则执行完后面的几条无符号右移操作之后,返回的capacity将是这个cap的2倍。
这里用到了一个非常强大的算法
其中int n = cap - 1; 是其中关键 hashmap每次扩充都是原来内存大小的二倍 这是因为扩充函数没有int n = cap - 1; 详细内容之后有时间再添加
hashmap内部操作
最新推荐文章于 2022-04-10 11:30:31 发布