Why does HashMap require that the initial capacity be a power of two?
问题 I was going through Java's HashMap source code when I saw the following //The default initial capacity - MUST be a power of two. static final int DEFAULT_INITIAL_CAPACITY = 16; My question is why does this requirement exists in the first place? I also see that the constructor which allows creating a HashMap with a custom capacity converts it into a power of two: int capacity = 1; while (capacity < initialCapacity) capacity <<= 1; Why does the capacity always has to be a power of two? Also,