Mögliche Duplizieren:
Java HashMap Default Initial CapacityBedeutung von "Potenz von 2" in java.util.HashMap Implementierung
Ich war die Umsetzung der HashMap in java.util.HashMap lesen. Die Anfangskapazität, die maximale Kapazität usw. sind Zweierpotenzen.
Teile der Deklaration kopiert von 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;
Die Kommentare deuten die Größen eine Zweierpotenz sein muss. Warum wird Zweierpotenz so wichtig?
Einige Arten von Hash-Tabellen verwenden einige der Bits aus dem Bitmuster des berechneten Hash-Werts als den Index in das Array. In diesem Fall muss die Größe eine Zweierpotenz sein. Es scheint, dass die Implementierung von HashMap so funktioniert. –