So sánh HashMap
và Hashtable
mã nguồn trong jdk 1.6, tôi thấy bên dưới mã bên trong HashMapTại sao initialCapacity của Hashtable là 11 trong khi DEFAULT_INITIAL_CAPACITY trong HashMap là 16 và đòi hỏi một sức mạnh của 2
/**
* The default initial capacity - MUST be a power of two.
*/
static final int DEFAULT_INITIAL_CAPACITY = 16;
int capacity = 1;
while (capacity < initialCapacity)
capacity <<= 1;
tuy nhiên, trong Hashtable , tôi thấy mã dưới đây?
table = new Entry[initialCapacity];
public Hashtable() {
this(11, 0.75f);
}
vì vậy câu hỏi của tôi là: tại sao hashMap yêu cầu công suất 2 là dung lượng ban đầu? và trong khi hashtable chọn 11 làm dung lượng ban đầu mặc định? tôi giả định điều này không có gì để làm với điều mà hashtable là thread an toàn và không cho phép null key hoặc giá trị.
thx.
+1 cho sự tò mò – AlexR
Câu hỏi tuyệt vời, hãy tiếp tục. –
@hetaoblog câu hỏi tuyệt vời. – Geek