Eventuali duplicati:
Java HashMap Default Initial Capacitysignificato di "potenza di 2" nell'attuazione java.util.HashMap
stavo leggendo l'attuazione di HashMap in java.util.HashMap. La capacità iniziale, la capacità massima ecc. Sono due potenze.
Parti dichiarazione copiati da 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;
I commenti indicano le dimensioni deve essere una potenza di due. Perché il potere di due ha tanta importanza?
Alcuni tipi di tabelle hash utilizzano alcuni dei bit del modello di bit del valore hash calcolato, come l'indice nell'array. In tal caso, la dimensione deve essere una potenza di due. Sembra che l'implementazione di HashMap funzioni in questo modo. –