Veröffentlicht 29. Oktober 200123 j Hi Gibt es ne Möglichkeit über den Wert einer Hashtable den Key des Wertes herauszufinden??? Cyrill
29. Oktober 200123 j ä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);
29. Oktober 200123 j 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)"!
29. Oktober 200123 j 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.
29. Oktober 200123 j Hmm Schade.. vielleicht kann man die Beiden Werte irgendwie verbinden also keys() und values().. versuch ich mal! Cyrill
29. Oktober 200123 j 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.
31. Oktober 200123 j 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
Archiv
Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.