Warum wird die Größenänderung so implementiert, wie sie ist?

Ich habe mehrere Fragen zum WiederaufbauHashMaps beim Hinzufügen eines neuen Schlüssel-Wert-Paares. Ich werde Fragen stellen, die auf diesen Fakten basieren (sie gelten für Oracle JVM und sind nicht sicher, ob sie für andere JVMs korrekt sind):

Größenänderung wird neu erstelltHashMap jedes Mal, wenn Sie HashMap größer als threshold (threshold = loadFactor * numberOfEntries) machen, um ein größeres inneres Tabellenarray zu haben. Es spielt keine Rolle, in welchen Eimer der neu erstellte Eintrag gestellt wird - die Karte wird immer noch größer. Selbst wenn alle Einträge in einen Eimer passen (d. H. Ihre Schlüssel)hashCode() die gleiche Nummer zurückgeben).HashMap verkleinert sich nicht, wenn Daten entfernt werden. Auch wenn alle Schlüssel abgezogen sindHashMapändert sich die innere Größe des Tisches nicht.

Nun die Fragen:

Sind diese Tatsachen richtig?

Wenn ja, dann:

Warum wurde die Größenänderung so implementiert? Ist es die Absicht, den inneren Tisch zu vergrößern, auch wenn dies offensichtlich nicht notwendig ist? Oder ein Bug?Warum schrumpft es nicht?