Dlaczego realizowana jest zmiana rozmiaru w taki sposób, w jaki jest?

Mam kilka pytań dotyczących przebudowyHashMaps podczas dodawania nowej pary klucz-wartość. Będę zadawał pytania na podstawie tych faktów (są one prawdziwe dla Oracle JVM, nie jestem pewien, czy są poprawne dla innych JVM):

Zmień rozmiar odbudowyHashMap mieć większą tablicę tablic wewnętrznych za każdym razem, gdy rośnie HashMap większy niż próg (threshold = loadFactor * numberOfEntries). Nie ma znaczenia, w którym wiadrze umieszczana jest nowo utworzona pozycja - mapa będzie nadal rosła. Nawet jeśli wszystkie Wpisy przechodzą w jedno wiadro (tzn. Ich klucze)hashCode() zwróć ten sam numer).HashMap nie zmniejsza się po usunięciu danych. Nawet jeśli wszystkie klucze zostaną usunięteHashMap, wewnętrzny rozmiar jego tabeli się nie zmienia.

Teraz pytania:

Czy te fakty są prawidłowe?

Jeśli tak, to:

Dlaczego tak zmieniono rozmiar? Czy to jest zamiar rozwijać wewnętrzny stół, nawet jeśli oczywiście nie jest to konieczne? Czy błąd?Dlaczego się nie kurczy?

questionAnswers(1)

yourAnswerToTheQuestion