jeśli dobrze pamiętam domyślną implementacją hashCode() w java obiektu typu Object() jest zwrócenie adresu pamięci obiektu. Kiedy tworzymy własne klasy, czytałem, że chcemy przesłonić hashCode(), aby po włożeniu ich do kolekcji związanej z hashem, takiej jak HashMap(), będzie działać poprawnie. Ale dlaczego adres pamięci jest zły?Dlaczego domyślny hashcode() w java bad jest zły?
Oczywiście na pewno zabraknie pamięci i będziesz miał kolizje, ale jedynym przypadkiem, w którym widzę, że jest to problem, jest sytuacja, w której masz do czynienia z TONAMI danych i masz bardzo mało pamięci, a następnie START wpływać na wydajność, ponieważ zbiory związane z hashem w kolizjach rozstrzygających java są łączone łańcuchami (zasobnik zostanie połączony z listą wartości, które zostały rozwiązane na ten sam kod/indeks).
Nie masz problemu. Możesz zacząć czytać [this] (http://stackoverflow.com/questions/27581/overriding-equals-and-hashcode-in-java?rq=1). Problemu nie można postrzegać niezależnie od koncepcji równości. –
Nie ma w tym nic złego, czasami trzeba to zmienić z innych powodów. – Affe
Domyślny 'hashCode()' nie ma nic wspólnego z adresami pamięci. Dokumentacja wymienia adresy pamięci jako możliwe dane wejściowe do obliczania kodu skrótu, ale nie jest to sposób implementacji w dowolnej najnowszej maszynie JVM. – Holger