Cyrill Geschrieben 29. Oktober 2001 Geschrieben 29. Oktober 2001 Hi Gibt es ne Möglichkeit über den Wert einer Hashtable den Key des Wertes herauszufinden??? Cyrill Zitieren
Mirko Geschrieben 29. Oktober 2001 Geschrieben 29. Oktober 2001 äh, den Key bestimmst du doch selber, wenn du den Wert in die Hashtable schreibst... ...in der Regel der hashCode des Wertes. Wobei es eben so ein HashCode ansich hat, dass man ihn nicht "zurückrechnen" kann. HashTable myHashTable = new HashTable(); Collection myCollection = new Collection("1","2","3","4","5"); myHashTable.put(myCollection.hashCode, myCollection); Zitieren
Cyrill Geschrieben 29. Oktober 2001 Autor Geschrieben 29. Oktober 2001 Hi Ja schon, aber sagen wir einmal unsere Hashtable sieht so aus: Key Wert 1 TEST 1 2 TEST 2 3 TEST 3 4 TEST 4 5 TEST 5 6 TEST 6 Nun jetzt hab z.B den Wert TEST 5 und ich brauch den dazügehörigen Key... wie mache ich das! Umgekehrt ist es ja einfacher, da gehts mit "hashtable.get(key)"! Zitieren
Mirko Geschrieben 29. Oktober 2001 Geschrieben 29. Oktober 2001 da hast du bei der HashTable wohl schlechte Karten. Du müßtest eben schon beim Füllen der Hashtable darauf achten, dass du aus dem Wert auch auf den Key kommen kannst (z.B. hashCode()). Ansonsten kannst du dir eben nur alle keys holen (keys()), und alle values (values). Nur beides zusammen eben leider nicht. Zitieren
Cyrill Geschrieben 29. Oktober 2001 Autor Geschrieben 29. Oktober 2001 Hmm Schade.. vielleicht kann man die Beiden Werte irgendwie verbinden also keys() und values().. versuch ich mal! Cyrill Zitieren
Mirko Geschrieben 29. Oktober 2001 Geschrieben 29. Oktober 2001 klar, eine Verbindung gibt es schon... Das ist die get() methode von der Hashtable. public synchronized Object get(Object key) { Entry tab[] = table; int hash = key.hashCode(); int index = (hash & 0x7FFFFFFF) % tab.length; for (Entry e = tab[index] ; e != null ; e = e.next) { if ((e.hash == hash) && e.key.equals(key)) { return e.value; } } return null; } aber eben nur in die eine Richtung... Wenn du einfach nur die beiden Collections mappest. Also collectionA[1] = collectionB[1], bekommst du auf jeden Fall nicht das richtige Ergbenis. Zitieren
T. Schiffler Geschrieben 31. Oktober 2001 Geschrieben 31. Oktober 2001 Hi Ich habe mir hier mal etwas gebastelt, denn ich hatte das gleiche Problem. Allerdings hatte ich nicht die komplette Value. Also habe ich mir einen eigenen Hashtable gemacht welcher intern wieder mit 2 Hashtables gearbeitet hat. Suchte ich nun nach dem Value so habe ich Hashtable a durchsucht, suchte ich nach Key so Hashtable b. In der eigenen Methode put habe ich halt das Key/Value Paar in beide Tables geschrieben. Eine andere Lösung wäre, dass Du halt alle Werte des Tables durchgehst und das Objekt das Du zurück bekommst immer vergleichst. Sind die gleich, so hast du den gewünschten gefunden ! Erbeere P.S. Sorry, wenn das etwas undurchsichtig ist, aber ich bin noch müde Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.