Hashtable - 3 Suchmöglichkeiten

Status
Nicht offen für weitere Antworten.
A

asdaanaa

Gast
Hallo,
wie bereits in meinem früheren Posting angemerkt, bringe ich mir selbst Java bei.
Nun bin ich auf folgende Aufgabe gestoßen:

Man nehme eine Hashtable und ermögliche folgende drei Anfragen:
1 Bei Angabe eines Key wird der entsprechende Value gefunden
2 Bei Angabe eines Value wird der entsprechende Key gefunden
3 Die gesamten Daten der Hashtable sollen auf einmal ausgegeben werden.
Das Ganze soll in Zusammenarbeit mit Server und Client geschehen.

Nr 1 und 3 sind nicht problematisch. Das habe ich schon hingekriegt. Nur an der Übergabe zum Client muss ich halt noch basteln, vor allen Dingen bei 3.

Aber erstmal will ich einen Ansatz für Nr 2 hinkriegen. Die Prüfung, ob ein bestimmter Value in der Hashtable enthalten ist, ist auch kein Problem (mal abgesehen davon, dass ich mir nicht sicher bin, wie ich die Prüfung einbauen kann, da ich noch nicht weiß, wie es dann weiter gehen könnte), aber wie bekomme ich den entsprechenden Key dazu, ohne eine zweite umgedrehte Hashtable anzulegen? Ich habe schon daran gedacht Enumeration wie in Nr 3 zu verwenden, komme damit aber auch nicht weiter. Vor allem irritiert mich da auch, dass Enumeration nach meinem Verständnis nur einmal durchlaufen werden kann.
Jedenfalls sitze ich fest und habe keinen erfolgverheißenden Ansatz für diesen Teil der Aufgabe. Könnt Ihr mir helfen?

Vielen Dank schon mal im Voraus


Grüße

Anja
 

hupfdule

Top Contributor
Du kannst über ein KeySet iterieren (Hashtable#keySet()). Dort überprüfst du, ob der Value der gesuchte ist. Wenn ja, ist der Key in selbigem Set der gesuchte.
 

SnooP

Top Contributor
hmm... implementierst du denn die hash-tabelle selbst oder benutzt du die java-hashtable?

Bei letzterer gibt es die Methode entrySet, die ein Set aus Key-Value Paaren beinhaltet... diese Paare werden in Map.Entrys gespeichert, so dass man zu jedem Value auch seinen key bekommt:
http://java.sun.com/j2se/1.5.0/docs/api/java/util/Map.Entry.html

Alternative Vorgehensweise - evtl. auch bei eigenen Implementierungen: Schreibe eine Methode getKey(Object value) indem du über alle enthaltenen Keys iterierst, z.B. indem du wie schon vorgeschlagen eine Methode hast, die alle Keys als Enumeration liefert... diese Keys kannst du dann der Reihe nach durchgehen und gucken, ob du mit get(currentKey) ein zum übergebenen value-Objekt gleiches (.equals()) Objekt findest.
 

Waldbeere

Mitglied
Vor allem irritiert mich da auch, dass Enumeration nach meinem Verständnis nur einmal durchlaufen werden kann.

Hi,

das ist wohl wahr. Es sprich aber doch nichts dagegen sich einfach eine neue Enumeration geben zu lassen.
Ist ja dann wieder ein neues Object das wieder von vorne anfängt.
 
A

asdaanaa

Gast
Hallo,
vielen Dank erst einmal an alle, die mir geantwortet haben.
Ich habe ein paar Sachen ausprobiert, bin aber noch nicht so ganz zu Rande gekommen. Folgende Probleme habe ich:

Das mit der Map habe ich folgendermaßen probiert:
Code:
    while (it.hasNext()) {
      Map.Entry entry = (Map.Entry)it.next();
      if (entry.equals("2343"))
      System.out.println(
        (String)entry.getKey() + " >> " +
        (String)entry.getValue()
      );
Allerdings bekomme ich nie irgend etwas zurück, obwohl die Zahl 2343 in der Hashtable und damit auch im Datensatz enthalten ist. Lasse ich die Zeile mit if weg, gibt er mir auch artig die gesamte Liste aus. Ich möchte aber in diesem Falle nur den zu "2343" gehörigen Key haben, nicht alle.
Was mache ich falsch?


Ein weiteres Problem habe ich bei Ausgabe der gesamten Hashtable von einem Server an einen Client. Folgenden Code habe ich dazu:

In der class Client:

Code:
      // Send request for all staff
      pw.println("A");
      //Read what is sent back from server
      String all = bf.readLine();
      if(all.charAt(0)=='*')
      {
         // Error name not recognised
         queryResults.setText("Error");
      }
      else
      {
         //Place number on the Text area with message
         queryResults.setText("");
         queryResults.setText("All Staff: "+ all);
      }
In der class Server:
Code:
          case'A': {
            // All staff required
            Enumeration e = numbers.keys();
            while (e.hasMoreElements()) {
              String all = (String)e.nextElement();
              pw.println(all + ": " + numbers.get(all));
            }
          }
Ich bekomme auch eine Ausgabe. Aber leider nicht die gesamte Liste, sondern nur das erste Key-Value-Paar.
Was mache ich hier falsch?


Jede Hilfe ist willkommen.

Liebe Grüße


Anja
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
O HashTable kann ohne Performance-Verlust in Multithreaded-Anwendungen eingesetzt werden. Java Basics - Anfänger-Themen 6
B Hashtable Java Basics - Anfänger-Themen 3
H Klassen Auf eine Hashtable aus mehreren Klassen zugreifen Java Basics - Anfänger-Themen 12
arti28 Verkaufsautomat Enumerations HashTable Java Basics - Anfänger-Themen 1
D Hashtable Java Basics - Anfänger-Themen 4
K Hashtable mit eigenen Konstruktor Java Basics - Anfänger-Themen 2
K NullPointerException in der Hashtable Java Basics - Anfänger-Themen 4
T Collections Hashtable gezielt auslesen. Java Basics - Anfänger-Themen 13
B HashTable & Strings übergeben Java Basics - Anfänger-Themen 4
A Input/Output Hashtable Ausgabe Java Basics - Anfänger-Themen 1
P Key anhand von Value finden (Hashtable) Java Basics - Anfänger-Themen 3
S Hashtable Java Basics - Anfänger-Themen 2
T Werte in Hashtable neu zuweisen Java Basics - Anfänger-Themen 3
P 2D Welt, Hashtable Java Basics - Anfänger-Themen 5
D Hashtable/Hashmap Java Basics - Anfänger-Themen 2
D In Hashtable suchen Java Basics - Anfänger-Themen 3
yampi Objektsammlung - Hashtable, Vector, Arrays Java Basics - Anfänger-Themen 8
L Hashtable nicht wirklich geeignet für mein Vorhaben? Java Basics - Anfänger-Themen 3
P | zu einer hashtable hinzufügen Java Basics - Anfänger-Themen 7
D java.lang.outofmemoryerror java heap space bei Hashtable Java Basics - Anfänger-Themen 3
D Hashtable Value(Array) in String und dann Ausgeben Java Basics - Anfänger-Themen 23
S Fortsetzung meiner frage (hashtable) danke vorab an alle Java Basics - Anfänger-Themen 3
S BITTE UM HILFE HASHTABLE/import java.util.Hashtable in Ecplipse Java Basics - Anfänger-Themen 12
A Verschachtelte Hashtable ausgeben. Java Basics - Anfänger-Themen 3
D Eine Liste wie ne HashTable, nur mit auslesbaren Key . . . Java Basics - Anfänger-Themen 31
G Hashtable füllen Java Basics - Anfänger-Themen 2
G Gesamte Hashtable ausgeben Java Basics - Anfänger-Themen 3
L Arbeiten mit Vectoren in einer Hashtable Java Basics - Anfänger-Themen 2
A Unterschied zwischen HashMap und Hashtable Java Basics - Anfänger-Themen 20
G Sortierter Hashtable? Java Basics - Anfänger-Themen 3
D Eine abgeänderte Hashtable erstellen Java Basics - Anfänger-Themen 3
K Probleme mit java.util.hashtable Java Basics - Anfänger-Themen 10
G Hashtable -> Ordnerstruktur Java Basics - Anfänger-Themen 10
M Hashtable gleichzeitigen Zugriff verhindern Java Basics - Anfänger-Themen 11
C Problem mit Hashtable Java Basics - Anfänger-Themen 6
M Hashtable an Datenbank schicken Java Basics - Anfänger-Themen 3
F Hashtable mit String[] als value Java Basics - Anfänger-Themen 2
F invertierung einer Hashtable Java Basics - Anfänger-Themen 4
P HashTable auslesen und in createDocument ausgeben Java Basics - Anfänger-Themen 4
T Warum kann Hashtable get Methode nicht funktionieren? Java Basics - Anfänger-Themen 3
N NullPointerException bei meiner Hashtable Java Basics - Anfänger-Themen 2
M Hashtable oder Hashmap mit Inhalt vorbelegen Java Basics - Anfänger-Themen 2
C Hashtable-get Java Basics - Anfänger-Themen 2
K Hashtable mischen (shuffeln)? Java Basics - Anfänger-Themen 4
H Objekte in einer Hashtable am einfachsten sortieren Java Basics - Anfänger-Themen 13
G Hilfe! Wie Kreise in Hashtable ablegen und wieder auslesen? Java Basics - Anfänger-Themen 2
G unterschied hashtable und hashmap? Java Basics - Anfänger-Themen 3
G hashtable und unsafe, unchecked Code Java Basics - Anfänger-Themen 3
L Hashtable Verständnis Frage Java Basics - Anfänger-Themen 4
R Hashtable ohne Values Java Basics - Anfänger-Themen 5
G Hashtable oder was sonst? Java Basics - Anfänger-Themen 8
S Value von ein Hashtable collectionen Java Basics - Anfänger-Themen 3
S Hashtable & Datei Java Basics - Anfänger-Themen 4
W Hashtable Integer als Value Java Basics - Anfänger-Themen 6
S Hashtable probleme Java Basics - Anfänger-Themen 6
N ein array in der hashtable Java Basics - Anfänger-Themen 6
W Hashtable oder was Anderes Java Basics - Anfänger-Themen 8
I Warum ließt er den Inhalt der Hashtable nicht? Java Basics - Anfänger-Themen 5
G die keys einer Hashtable sortieren Java Basics - Anfänger-Themen 15
D Hashtable gibt eigenartiges wieder Java Basics - Anfänger-Themen 2
G hashtable jeden wert mit trim() bearbeiten Java Basics - Anfänger-Themen 3
K Objekte und deren Anzahl speichern, hashtable? Java Basics - Anfänger-Themen 9
P hashtable Java Basics - Anfänger-Themen 8
V Hashtable ausgeben Java Basics - Anfänger-Themen 4
V Suchen und ausgeben - Hashtable Java Basics - Anfänger-Themen 3
J HashTable Java Basics - Anfänger-Themen 4
G Inhalt einer Hashtable ausgeben Java Basics - Anfänger-Themen 2
A Hashtable als Rückgabewert Java Basics - Anfänger-Themen 3
N maximale Anzahl Schlüssel in einem Hashtable Java Basics - Anfänger-Themen 7
T Hashtable und Vektor Java Basics - Anfänger-Themen 3
R Hashtable wird falsch ausgegeben Java Basics - Anfänger-Themen 5
B Hashtable.containsKey Problem Java Basics - Anfänger-Themen 13

Ähnliche Java Themen

Neue Themen


Oben