Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Hashtable Frage -Java!!

Empfohlene Antworten

Veröffentlicht

Hi

Gibt es ne Möglichkeit über den Wert einer Hashtable den Key des Wertes herauszufinden???

Cyrill

ä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);  

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)"!

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.

Hmm Schade.. vielleicht kann man die Beiden Werte irgendwie verbinden also keys() und values().. versuch ich mal!

Cyrill

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.

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.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.