現在のソース コードへのリンクは次のとおりです: http://www.docjar.com/html/api/java/util/HashMap.java.html
あなたの質問に対する答えは、(部分的に) 実装固有のものです。
1) コードを参照してください。実装方法に関するあなたの仮定initialCapacityは正しくないことに注意してください...少なくともOracle Java 6および7の場合。具体的にinitialCapacityは、必ずしもハッシュマップの配列サイズではありません。
2) a のサイズはHashMapエントリの数であり、2^32! あなたは実際に容量について話していると思います。HashMap の配列のサイズは、理論的には2^31 - 1(Java 配列の最大サイズ) に制限されています。現在の実装でMAX_CAPACITYは、実際には2^30; コードを参照してください。
3) 「... サイズの配列を持つのが賢明2^32ですか?」 現在定義されている Java では不可能であり、不可能なことをしようとするのは賢明ではありません。
Java でのハッシュ テーブル データ構造の設計について本当に質問している場合は、通常のサイズのハッシュ テーブルの効率と巨大なハッシュ テーブルの効率との間にトレードオフがあります。2^30つまり、要素を大幅に超えるマップ。実装は、HashMap通常のサイズのマップで最適に機能するように調整されています。巨大なマップを日常的に処理する必要があり、パフォーマンスが重要である場合は、特定の要件に合わせて調整されたカスタム マップ クラスの実装を検討する必要があります。