Wewnętrzna implementacja java.util.HashMap i HashSet

Próbowałem zrozumieć wewnętrzną implementacjęjava.util.HashMap ijava.util.HashSet.

Następujące wątpliwości pojawiają się w mojej głowie na chwilę:

Jakie jest znaczenie tego@Override public int hashcode() w HashMap / HashSet? Gdzie jest używany wewnętrzny kod skrótu?Ogólnie widziałem klucz HashMap jako aString lubićmyMap<String,Object>. Czy mogę zmapować wartości przeciwkosomeObject (zamiast String) jakmyMap<someObject, Object>? Jakie wszystkie kontrakty muszę wykonać, aby to się stało pomyślnie?

Z góry dziękuję !

EDYTOWAĆ:

Czy mówimy, że kod skrótu klucza (sprawdź!) Jest rzeczywistą rzeczą, przeciwko której wartość jest odwzorowywana w tabeli mieszania? A kiedy to zrobimymyMap.get(someKey); java dzwoni wewnętrzniesomeKey.hashCode() aby uzyskać liczbę w tabeli Hash, aby uzyskać wynikową wartość?

Odpowiedź: Tak.

EDYCJA 2:

Wjava.util.HashSet, skąd jest generowany klucz dla tabeli Hash? Czy to z obiektu, który dodajemy, np.mySet.add(myObject); następniemyObject.hashCode() zdecyduje, gdzie to jest umieszczone w tabeli mieszania? (ponieważ nie dajemy kluczy w HashSet).

Odpowiedź: Dodany obiekt staje się kluczem. Wartość jest obojętna!

questionAnswers(9)

yourAnswerToTheQuestion