thể trùng lặp:
Java HashMap Default Initial Capacitytầm quan trọng của "sức mạnh của 2" trong việc thực hiện java.util.HashMap
Tôi đã đọc thi hành HashMap trong java.util.HashMap. Công suất ban đầu, công suất tối đa, vv, là quyền hạn của hai.
Các bộ phận của tuyên bố sao chép từ java.util.HashMap
/**
* The default initial capacity - MUST be a power of two.
*/
static final int DEFAULT_INITIAL_CAPACITY = 16;
/**
* The maximum capacity, used if a higher value is implicitly specified
* by either of the constructors with arguments.
* MUST be a power of two <= 1<<30.
*/
static final int MAXIMUM_CAPACITY = 1 << 30;
/**
* The table, resized as necessary. Length MUST Always be a power of two.
*/
transient Entry[] table;
Các ý kiến đề nghị các kích thước PHẢI là một sức mạnh của hai. Tại sao sức mạnh của hai được cho là rất quan trọng?
Một số loại bảng băm sử dụng một số bit từ mẫu bit của giá trị băm được tính toán, làm chỉ mục vào mảng. Trong trường hợp đó, kích thước phải là một sức mạnh của hai. Dường như việc triển khai HashMap hoạt động theo cách đó. –