Hi Forum,
ohne Umschweifen, ich habe ein Problem mit einem Projekt. In diesem Projekt habe ich ein relativ großes Wörterbuch, das häufig abgefragt wird. Deswegen will ich es als HashMap implementieren. Jegliche andere Implementierung würde die Laufzeiten vervieeeeelfachen, weswegen ich nichts anderes benutzen möchte. Dummerweise habe ich ohne groß Nachzudenken die Worte im Wörterbuch als Arrays implementiert. Als ich seltsame Ausgaben beim Aufruf der compare(<T>[]) Methode des HashMap bekam, fiel mir auf, dass Arrays wahrscheinlich nicht eine hashCode() Methode unterstützen, die bei Inhaltlicher Gleichheit denselben Code produziert, sondern eher eine, die die Referenz zum Array als Seed für den Hashcode benutzt.
Das wär natürlich ärgerlich, da ich dann das Nachschlagen im Wörterbuch so knicken kann.
Meine Frage: Stimmt es, dass Array-Hashcode nicht abhängig vom Inhalt des Arrays erstellt wird? Wenn ja, kann ich java dazu überreden es doch zu tun? Wenn nein, gibt es eine einfache Alternative? Der Code ist bereits relativ umfangreich, es wäre sehr aufwendig, ein komplett neues Objekt als Basis für die Wörterbucheinträge zu benutzen..
Gruß, Arne
ohne Umschweifen, ich habe ein Problem mit einem Projekt. In diesem Projekt habe ich ein relativ großes Wörterbuch, das häufig abgefragt wird. Deswegen will ich es als HashMap implementieren. Jegliche andere Implementierung würde die Laufzeiten vervieeeeelfachen, weswegen ich nichts anderes benutzen möchte. Dummerweise habe ich ohne groß Nachzudenken die Worte im Wörterbuch als Arrays implementiert. Als ich seltsame Ausgaben beim Aufruf der compare(<T>[]) Methode des HashMap bekam, fiel mir auf, dass Arrays wahrscheinlich nicht eine hashCode() Methode unterstützen, die bei Inhaltlicher Gleichheit denselben Code produziert, sondern eher eine, die die Referenz zum Array als Seed für den Hashcode benutzt.
Das wär natürlich ärgerlich, da ich dann das Nachschlagen im Wörterbuch so knicken kann.
Meine Frage: Stimmt es, dass Array-Hashcode nicht abhängig vom Inhalt des Arrays erstellt wird? Wenn ja, kann ich java dazu überreden es doch zu tun? Wenn nein, gibt es eine einfache Alternative? Der Code ist bereits relativ umfangreich, es wäre sehr aufwendig, ein komplett neues Objekt als Basis für die Wörterbucheinträge zu benutzen..
Gruß, Arne