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):
HashMap
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?