hashmap の内部と、挿入の一部としてサイズがどのように変更されるかを次に示します。
java.util.HashMap.java
/**
* The default initial capacity - MUST be a power of two.
*/
static final int DEFAULT_INITIAL_CAPACITY = 16;
/**
* The load factor used when none specified in constructor.
*/
static final float DEFAULT_LOAD_FACTOR = 0.75f;
配列のデフォルト サイズは 16 であり、負荷係数は、ハッシュマップのサイズが現在のサイズの 75%、つまり 12 に達するたびに、既存のデータ構造要素のハッシュコードを再計算することによってサイズを 2 倍にすることを意味します。
java.util.HashMap.java
/**
* 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;
ハッシュマップが展開できる最大サイズ、つまり 2^(30) = 1,073,741,824 まで
したがって、要素が大きくなるにつれてデータ構造が再ハッシュされるのを避けるには、ハッシュマップを作成するときに明示的にハッシュマップのサイズを指定するのがベスト プラクティスです。