Hallo,
wir sind heute in der Vorlesung das Thema "Hashcodes" durchgegangen sowie allgemein die Klasse Object.
Die Methoden, welche man überschreiben kann(wie toString(), equals(), etc.) habe ich direkt verstanden... jedoch verstehe ich jetzt in der Nachbereitung nicht, was es genau mit dem Hashcode auf sich hat...
So wie ich es verstanden habe, und bisher recherchiert habe, ist das eine Methode, welche man für seine "eigenen" Klassen überschreiben kann, um denen quasi eine Art EINDEUTIGE Identifikationsnummer zu verleihen. Stimmt dies?
Beispielsweise
Ist das soweit korrekt? Was genau bringt "mir" das aber nun??? Macht man das um
bei x beliebig vielen Instanzen eindeutig eine Instanz von einer anderen unterscheiden zu können???
(Da ja dieser hashcode meines Wissens von "Java" durch die Überschreibung als Zahl generiert wird, und wenn zb. mit toString() versucht wird auf eine nicht überschriebene hashCode() instanz zuzugreifen, dann sieht man auch diesen Hashcode...)
Mir ist halt leider noch nicht klar, welchen praktischen Zweck dieses erfüllt???
wir sind heute in der Vorlesung das Thema "Hashcodes" durchgegangen sowie allgemein die Klasse Object.
Die Methoden, welche man überschreiben kann(wie toString(), equals(), etc.) habe ich direkt verstanden... jedoch verstehe ich jetzt in der Nachbereitung nicht, was es genau mit dem Hashcode auf sich hat...
So wie ich es verstanden habe, und bisher recherchiert habe, ist das eine Methode, welche man für seine "eigenen" Klassen überschreiben kann, um denen quasi eine Art EINDEUTIGE Identifikationsnummer zu verleihen. Stimmt dies?
Beispielsweise
Java:
public class Buch {
(...)
@Override
public int hashCode() {
return this.titel+this.autor+this.erscheinungsjahr+this.preis;
//oder einfacher: return this.isbnNummer;
(...)
}
}
Ist das soweit korrekt? Was genau bringt "mir" das aber nun??? Macht man das um
bei x beliebig vielen Instanzen eindeutig eine Instanz von einer anderen unterscheiden zu können???
(Da ja dieser hashcode meines Wissens von "Java" durch die Überschreibung als Zahl generiert wird, und wenn zb. mit toString() versucht wird auf eine nicht überschriebene hashCode() instanz zuzugreifen, dann sieht man auch diesen Hashcode...)
Mir ist halt leider noch nicht klar, welchen praktischen Zweck dieses erfüllt???