Was wird die Methode HasMap.get() zurückgeben, wenn die Methoden equals und hashCode nicht überschrieben wurden?
sobes.tech KI
Antwort von AI
null wird zurückgegeben, wenn der Schlüssel, nach dem gesucht wird, nicht genau dasselbe Objekt ist (hat die gleiche Referenz), das beim Einfügen verwendet wurde.
Der Grund dafür ist, dass HashMap eine Kombination aus hashCode() und equals() verwendet, um die "Gleichheit" von Schlüsseln zu bestimmen. Wenn diese Methoden nicht überschrieben werden, werden die Implementierungen aus Object verwendet.
Object.hashCode()gibt in der Regel einen Wert zurück, der auf der Speicheradresse des Objekts basiert, also für jede Instanz einzigartig ist.Object.equals()prüft einfach die Referenzgleichheit (this == obj).
Damit HashMap.get() ein Element findet, wenn equals und hashCode() nicht überschrieben wurden, müssen beide Bedingungen erfüllt sein:
- Die Hash-Codes (
Object.hashCode()) müssen gleich sein, was sehr unwahrscheinlich für verschiedene Objekte ist. - Die Objekte müssen referenziell gleich sein (
Object.equals()), also die gleiche Instanz.
Wenn Sie ein Objekt in eine HashMap legen und versuchen, es mit einem anderen Objekt mit denselben Feldwerten (aber nicht derselben Instanz) abzurufen, werden hashCode und equals standardmäßig sie als unterschiedlich betrachten, und get() gibt null zurück.