Hallo,
ich möchte gerne folgendes Problem lösen:
Man implementiere eine allgemeine Hashtabelle, die
• komplett unabhängig von den gespeicherten Daten implementiert ist,
• geschlossenes Hashing zur Konfliktauflösung verwendet,
• doppelt hasht und
• auf eine Suchanfrage mehrere Ergebnisse zurückliefern kann
Letztlich soll das dann genutzt werden um eine Reihe, in einem Array vorliegernder, Objekte (in diesem Fall Fußballspieler), bestehend aus zwei String-Variablen (Name des Spielers und Verein) in zwei Hashtabellen einzuordnen (einmal nach Name und einmal nach Verein gehasht). Zusätzlich soll dann eine Funktion vorliegen der ein Spielername übergeben wird und die einem dann mittels der beiden Tabellen alle Spieler ausgibt, die im gleichen Verein spielen, wie dieser Spieler.
Meine Basis für die Fußballspieler sieht so aus:
Wo es jetzt bei mit hapert ist:
Wie bastle ich eine Funktion, die jeden beliebigen Datenwert in meine Tabelle einordnen kann?
Angenommen ich wüsste, dass ich in meine Hashtabellen ausschließlich meine Fußballspieler-Objekte einordne (was ich letztlich ja auch tue, aber die Anforderungen sind nun mal anders), dann würde ich mir einfach den Anfangsbuchstaben des Spielers/Clubs nehmen, davon den Ascii-Wert ermitteln, also grob etwa so:
und danach dann mittels der Hashfunktion (oder bei Kollision mit der Sondierungsfunktion) in die Tabelle einordnen.
Aber wenn das völlig unabhängig des der gespeicherten Daten sein soll? Puh, wie könnte man das lösen? Ich brauche doch letztlich immer einen int-Wert, also den Schlüssel, den ich dann in meiner Hashfunktion verwende um die Stelle des zu speichernden Objekts in der Hashtabelle zu ermitteln. Die Hash-Funktionen der Java-Klassenbibliothek darf ich nicht nutzen.
Vielleicht habe ich dann noch andere Fragen, aber ich will erstmal diese Sache verstehen.
Danke
ich möchte gerne folgendes Problem lösen:
Man implementiere eine allgemeine Hashtabelle, die
• komplett unabhängig von den gespeicherten Daten implementiert ist,
• geschlossenes Hashing zur Konfliktauflösung verwendet,
• doppelt hasht und
• auf eine Suchanfrage mehrere Ergebnisse zurückliefern kann
Letztlich soll das dann genutzt werden um eine Reihe, in einem Array vorliegernder, Objekte (in diesem Fall Fußballspieler), bestehend aus zwei String-Variablen (Name des Spielers und Verein) in zwei Hashtabellen einzuordnen (einmal nach Name und einmal nach Verein gehasht). Zusätzlich soll dann eine Funktion vorliegen der ein Spielername übergeben wird und die einem dann mittels der beiden Tabellen alle Spieler ausgibt, die im gleichen Verein spielen, wie dieser Spieler.
Meine Basis für die Fußballspieler sieht so aus:
Code:
public class Player {
protected String name;
protected String club;
public Player(String name, String club) {
this.name = name;
this.club = club;
public String getName() {
return name;
}
public String getClub() {
return club;
}
public class Euro2008 {
public static Player[] allTeamPlayer = {
new Player("Diego Benaglio", "VfL Wolfsburg"),
//und noch 367 andere Spieler
};
}
Wie bastle ich eine Funktion, die jeden beliebigen Datenwert in meine Tabelle einordnen kann?
Angenommen ich wüsste, dass ich in meine Hashtabellen ausschließlich meine Fußballspieler-Objekte einordne (was ich letztlich ja auch tue, aber die Anforderungen sind nun mal anders), dann würde ich mir einfach den Anfangsbuchstaben des Spielers/Clubs nehmen, davon den Ascii-Wert ermitteln, also grob etwa so:
Code:
int key = (int) Euro2008.allTeamPlayer[0].getName().charAt(0);
Aber wenn das völlig unabhängig des der gespeicherten Daten sein soll? Puh, wie könnte man das lösen? Ich brauche doch letztlich immer einen int-Wert, also den Schlüssel, den ich dann in meiner Hashfunktion verwende um die Stelle des zu speichernden Objekts in der Hashtabelle zu ermitteln. Die Hash-Funktionen der Java-Klassenbibliothek darf ich nicht nutzen.
Vielleicht habe ich dann noch andere Fragen, aber ich will erstmal diese Sache verstehen.
Danke