auto commit
This commit is contained in:
parent
2ea73a3ede
commit
63fc93fb52
|
@ -759,7 +759,7 @@ void transfer(Entry[] newTable) {
|
|||
|
||||
### 6. 扩容-重新计算桶下标
|
||||
|
||||
在进行扩容时,需要把键值对重新放到对应的桶上。HashMap 使用了一个特殊的机制,可以降低重新计算桶下标的操作。
|
||||
在进行扩容时,需要把键值对重新计算桶下标,从而放到对应的桶上。在前面提到,HashMap 使用 hash%capacity 来确定桶下标。HashMap capacity 为 2 的 n 次方这一特点能够极大降低重新计算桶下标操作的复杂度。
|
||||
|
||||
假设原数组长度 capacity 为 16,扩容之后 new capacity 为 32:
|
||||
|
||||
|
@ -768,10 +768,10 @@ capacity : 00010000
|
|||
new capacity : 00100000
|
||||
```
|
||||
|
||||
对于一个 Key,
|
||||
对于一个 Key,它的哈希值 hash 在第 5 位:
|
||||
|
||||
- 它的哈希值如果在第 5 位上为 0,那么取模得到的结果和之前一样;
|
||||
- 如果为 1,那么得到的结果为原来的结果 +16。
|
||||
- 为 0,那么 hash%00010000 = hash%00100000,桶位置和原来一致;
|
||||
- 为 1,hash%00010000 = hash%00100000 + 16,桶位置是原位置 + 16。
|
||||
|
||||
### 7. 计算数组容量
|
||||
|
||||
|
|
|
@ -759,7 +759,7 @@ void transfer(Entry[] newTable) {
|
|||
|
||||
### 6. 扩容-重新计算桶下标
|
||||
|
||||
在进行扩容时,需要把键值对重新放到对应的桶上。HashMap 使用了一个特殊的机制,可以降低重新计算桶下标的操作。
|
||||
在进行扩容时,需要把键值对重新计算桶下标,从而放到对应的桶上。在前面提到,HashMap 使用 hash%capacity 来确定桶下标。HashMap capacity 为 2 的 n 次方这一特点能够极大降低重新计算桶下标操作的复杂度。
|
||||
|
||||
假设原数组长度 capacity 为 16,扩容之后 new capacity 为 32:
|
||||
|
||||
|
@ -768,10 +768,10 @@ capacity : 00010000
|
|||
new capacity : 00100000
|
||||
```
|
||||
|
||||
对于一个 Key,
|
||||
对于一个 Key,它的哈希值 hash 在第 5 位:
|
||||
|
||||
- 它的哈希值如果在第 5 位上为 0,那么取模得到的结果和之前一样;
|
||||
- 如果为 1,那么得到的结果为原来的结果 +16。
|
||||
- 为 0,那么 hash%00010000 = hash%00100000,桶位置和原来一致;
|
||||
- 为 1,hash%00010000 = hash%00100000 + 16,桶位置是原位置 + 16。
|
||||
|
||||
### 7. 计算数组容量
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user