2016-10-12 7 views
-1

Derzeit habe ich zum Spaß in den JSE-Quellcode gebohrt. Aus einigen Tutorials habe ich ein Prinzip two equals objects (i.e. as to object a and b a.equals(b) returns true) must have the same hashcode, on the other hand, two objects with the same hashcode are not necessarily equals gefunden. Gemäß dem HashTable-Quellcode von Java API (http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/6-b14/java/util/Hashtable.java), z.B. beziehen sich auf Zeile 254, können wir fast equals => same hashcode ableiten, aber ich kann immer noch nicht vollständig verstehen, warum two objects with the same hashcode are not necessarily equals. Jeder kann mehr Gründe dafür geben? Vielen Dank im VorausWarum sind zwei Objekte mit demselben Hashcode nicht notwendigerweise gleich?

Hinweis! Diese Frage ist mehr daran interessiert, warum zwei Objekte mit dem gleichen Hash-Code sind nicht notwendigerweise gleich

+1

Es gibt mehr mögliche 'String's (zum Beispiel) als es' int's gibt. Irgendwann werden Ihnen die einzigartigen Hashcodes ausgehen, sogar mit einem ansonsten perfekten Hash-Algorithmus. – resueman

+0

Sie und Ihr Zwillingsbruder haben den gleichen Geburtstagstag, sind aber unterschiedliche Personen .... –

Antwort

0

Das ist eine einfache Frage des Zählens. Ein Hash-Code ist eine ganze Zahl und hat somit 32 Bits. Nehmen Sie jetzt zum Beispiel eine 10. Da es 64 Bits lang ist, gibt es viel mehr Werte als 2 . Daher müssen viele Werte denselben Hash-Code haben.

Verwandte Themen