Java Hashtable .containsKey(String key) ist die Rückgabe true, auch wenn die Streicher und die hashcodes Verschieden sind... Wie?

Ich bin derzeit mit einigen Problemen mit meiner Hashtable in java, wo FEightPuzzle ist eine Klasse die ich erstellt habe.

In meiner Klasse, ich habe eine Zeichenkette, die die Speicherung der Schlüssel für jede Instanz. Nun bei meinem Programm, wenn ich check in der Hashtable für die doppelte Instanzen, die ich manchmal "finden", wenn wirklich die gefunden, die sind anders.

Nehmen, wenn ich zum Beispiel call-bol.containsKey(Strom.Schlüssel), wo bol ist ein HT und Strom FEightPuzzle.

Wenn dies wahr ist, überprüfe ich die Werte der Schlüssel, und Sie sind

current.key =
"8 14 11 0 6 12 13 1 10 4 5 9 15 2 3 7"

bol.get(current.key).key =
"12 8 4 0 13 9 5 1 14 10 6 2 15 11 7 3"

Werte

current.key.hashCode() = -950607924

bol.get(current.key).key.hashCode() = -1856769042

Tut mir Leid, Sie zu stören, aber dieses problem ist wirklich immer zu mir, und es war das Letzte, was ich erwartet heute Abend um ehrlich zu sein (Sie nicht Liebe)... Irgendwelche Tipps oder Antworten würde sehr geschätzt werden!

  • Als seitliche Anmerkung, die Hashtable ist veraltet, verwenden Sie besser eine HashMap (oder ConcurrentHashMap wenn Sie brauchen, thread safety).
  • Ist es möglich, dass Sie ändern die Schlüssel der Elemente, die bereits Hinzugefügt, um Ihre Karte (ohne das entfernen und neu-hinzufügen zu halten, Karte Integrität intakt)?
  • Gute Frage, aber Nein, ich glaube nicht, dass es möglich ist. Eine Instanz ist-Zustand eingestellt ist, wenn es initialisiert wird, werden keine änderungen vorgenommen, dann - und das ist, wo der Schlüssel ist aus
  • Können Sie nach dem code, wo Sie das hinzufügen der Objekte zu den HT?
InformationsquelleAutor Sekm | 2011-04-12
Schreibe einen Kommentar