当我浏览Java的HashMap源代码时,我看到了以下内容
//The default initial capacity - MUST be a power of two.
static final int DEFAULT_INITIAL_CAPACITY = 16;
我的问题是,为什么首先会存在这个要求?我还看到,允许创建具有自定义容量的HashMap的构造函数将其转换为2的幂:
int capacity = 1;
while (capacity < initialCapacity)
capacity <<= 1;
为什么容量总是必须是2的幂?
另外,当执行自动重新散列
如果我按行或按列遍历2D矩阵,是否有任何性能差异。
例如:
import random
import time
l = []
for i in range(1000000):
temp = [random.random() for x in range(10)]
l.append(temp)
start_time = time.time()
for i in range(1000000):
for j in range(10):
l[i][j] -= 0
end_time = time.time()
time_taken_row_wise =