Elemente einer HashTabelle gezielt ansprechen

ZGoten

Mitglied
Hallo,
ich bin Student der Informatik im ersten Semester und neu hier im Forum.

Ich habe ein Verständnisprblem das Hashing betrifft, konnte aber mittels Suchfunktion und Lesen der FAQs keine Antwort darauf finden.

Folgendes Problem:

Beim Hashing kann es zu Kollsionen kommen, wenn verschiedene Schlüssel an der selben Stelle gespeichert werden (dem selben Bucket). Um solche Kollisionen zu vermeiden gibt es die Methode des Sondierens. Das habe ich in der Theorie soweit verstanden.
Beim Umsetzen in die Praxis tritt das Problem auf.

Java:
Hashtable h = new Hashtable (10);

Mit dieser Hashtable arbeite ich. In einer Aufgabe wird verlangt, eine Sondiermethode zu programmieren, um Kollisionen zu vermeiden.
Jedoch frage ich mich, wie es mit solch einer Hashtable in Java überhaupt zu einer Kollision kommen kann, da jeder Schlüssel automatisch an einer neuen Stelle gespeichert wird.
Gibt es einen Weg, die einzelnen "Buckets" der Hashtable anzusprechen?
 
Zuletzt bearbeitet:
S

SlaterB

Gast
auf die interne Implementierung einer Klasse kannst du selbstverständlich so gut wie gar nicht zugreifen,
weder bei Hashtable, noch bei ArrayList, String, JButton, oder sonst einer Klasse,

dein Vorhaben scheint nicht sinnvoll, ist es nicht vielleicht eher deine Aufgabe, eine komplett eigene ähnliche Klasse zu schreiben?
 

ThreadPool

Bekanntes Mitglied
Jedoch frage ich mich, wie es mit solch einer Hashtable in Java überhaupt zu einer Kollision kommen kann, da jeder Schlüssel automatisch an einer neuen Stelle gespeichert wird.

Wenn du deine Hashtabelle nur mit einer Größe von 10 Initialisierst und 100 Werte reinpackst wird es garantiert zu Kollisionen kommen. ;) Wann Java die Hashtabelle von selbst vergrößert kannst du etwas über den "loadfactor" steuern, dafür gibts einen extra Konstruktor.
 
Zuletzt bearbeitet:

ZGoten

Mitglied
Hmm, eine neue Klasse zu schreiben, die HashTable ähnelt scheint mir doch etwas viel zu sein für die mickrigen 60 Punkte.
Allerdings würde das Sinn ergeben, weil ich dann erst die Sondierungsfunktion einbauen kann (die ja mit der vordefinierten Klasse HashTable bereits ausgeführt wird).

Vielleicht hilft es, wenn ich die Aufgabenstellung einmal zitiere:

In dem ADT HashTable sollen String-Objekte verwaltet werden. In der Hashtable selbst werden Paare (key, String) gespeichert. Der key (vom Typ int) wird aus dem zu speichernden String-Objekt berechnet. Für die Berechnung eines Schlüssels aus einem String gibt es eine Vielzahl von Verfahren. Man muss auch nicht den gesamten String zur Berechnung heranziehen. FÜr die Berechnung von Key nehmen Sie die Summe des ASCII-Werts des ersten und des letzten Buchstabens.

Implementieren Sie für den ADT HashTable folgende Operationen:

put Hashtable x key x String -> String
get Hashtable x key -> String
[...]usw.

Bislang dachte ich, die Aufgabe wäre eine Art Benutzerumgebung zu kreieren, die mit Hashtable als vordefinierter Klasse arbeitet und mit der der Benutzer die Table beliebig verändern kann.
 

ThreadPool

Bekanntes Mitglied
Vielleicht hilft es, wenn ich die Aufgabenstellung einmal zitiere:

Sieht nach selber schreiben aus die Aufgabe, zumal der built-in Java Typ "Hashtable" geschrieben wird und du eine "HashTable" implementieren sollst. Eine total unspektakuläre Hashtabelle (und ich sehe da nix spektakuläres in der Aufgabe) braucht nicht viel an Code. :)
 

ZGoten

Mitglied
Sieht nach selber schreiben aus die Aufgabe, zumal der built-in Java Typ "Hashtable" geschrieben wird und du eine "HashTable" implementieren sollst. Eine total unspektakuläre Hashtabelle (und ich sehe da nix spektakuläres in der Aufgabe) braucht nicht viel an Code. :)

Ich habs befürchtet. Naja ok, vielen Dank.
Zum Abschluss vielleicht noch ein kleiner Tipp:

Am besten gehe ich so vor, dass ich ein Interface mit allen gewünschten Operationen (Methoden) erstelle, eine Klasse, in denen diese Methoden geschrieben werden, und zuletzt die eigentliche Hashtable-Klasse, die das Interface implementiert und die Eigentliche Tabelle mit 2 Arrays darstellt - eins das die Key-Value Paare speichert und eins, das den jeweiligen Index zu einem Key speichert, oder?
 

Sekundentakt

Bekanntes Mitglied
Ich lese aus der Aufgabenstellung heraus, dass Du einfach die Ascii-Darstellung des ersten und letzten Zeichens deines Strings nehmen sollst.

Der String lautet
"Sekundentakt".

groß S -> Ascii -> 83
klein t -> Ascii -> 116

Das Hashverfahren von Dir soll Ascii(S) + Ascii(t) lauten:
83 + 116 = 199

Dein Hashwert (bzw. Key) für den String "Sekundentakt" lautet 199.

Der erste Eintrag deiner Hashtable könnte also
Code:
199, Sekundentakt
lauten.

EDIT:
Warum zwei Arrays?
Wenn Du ein zweidimensionales hast, reicht das doch, oder?
Ich würde daher - falls erlaubt - auf ArrayMap zurückgreifen.
Ansonsten wie Du schon sagtest: Key-Array mit [HASH][Index] und ein Value-Array mit [Index][Value].
 
Zuletzt bearbeitet:

ZGoten

Mitglied
Ich lese aus der Aufgabenstellung heraus, dass Du einfach die Ascii-Darstellung des ersten und letzten Zeichens deines Strings nehmen sollst.

Der String lautet
"Sekundentakt".

groß S -> Ascii -> 83
klein t -> Ascii -> 116

Das Hashverfahren von Dir soll Ascii(S) + Ascii(t) lauten:
83 + 116 = 199

Dein Hashwert (bzw. Key) für den String "Sekundentakt" lautet 199.

Der erste Eintrag deiner Hashtable könnte also
Code:
199, Sekundentakt
lauten.

So weit war ich schon. Aber mit der Aufgabenstellung geht es noch weiter. Den jeweiligen Key zu einem String zu berechnen ist nur ein kleiner Teil der Aufgabe. Mir ging es darum, ob ich eine eigene Hashtable-ähnliche Klasse schreiben, oder mit der bereits vordefinierten arbeiten soll.
 

ZGoten

Mitglied
Ok, dann schreib ich eine neue Klasse, danke Leute. ;)

/edit:
Hat alles geklappt, musste nicht mal zwei Arrays benutzen um die Keys extra zu speichern, da die sich jederzeit ausreichnen lassen.
 
Zuletzt bearbeitet:

Sekundentakt

Bekanntes Mitglied
Ok, dann schreib ich eine neue Klasse, danke Leute. ;)

/edit:
Hat alles geklappt, musste nicht mal zwei Arrays benutzen um die Keys extra zu speichern, da die sich jederzeit ausreichnen lassen.

Könntest Du das Ganze mal posten?
Mich würde interessieren, wie Du dieses String-Array dynamisch gefüllt hast bzw. wie Du das mit dem Key gemeint hast.

m.E. nach würde das mit vielem (z.B. int-Array), nur nicht mit einem String-Array laufen. Daher die Neugier. :)
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
E Elemente innerhalb einer ArrayList vergleichen Allgemeine Java-Themen 33
Z Elemente einer ArrayList von rechts wegnehmen Allgemeine Java-Themen 5
J Elemente zu einer List hinzufügen? Allgemeine Java-Themen 9
S Aus einer Liste<Oberklasse> alle Elemente die eine bestimmte Unterklasse von Oberklasse haben filter Allgemeine Java-Themen 8
E Reihenfolge der Elemente einer ArrayList? Allgemeine Java-Themen 4
S Einzelne Elemente in einer Bild Datei Allgemeine Java-Themen 5
O Warum kann ich so keine Elemente löschen und erhalte einen IllegalStateException? Allgemeine Java-Themen 4
JavaJüngling beliebige Collection die Comperable Elemente enthält als Parameter Allgemeine Java-Themen 37
B Einfach Elemente zweier Arraylisten kreuz und quer vergleichen, min und max Problem? Allgemeine Java-Themen 16
H Elemente aus ArrayList in Array speichern Allgemeine Java-Themen 8
J In einem Set doppelte Elemente erzeugen Allgemeine Java-Themen 4
GreenTeaYT Elemente eines 2Dim LinkedList von links nach rechts ausgeben? Allgemeine Java-Themen 0
H ArrayList: Leere Elemente finden? Allgemeine Java-Themen 2
Streeber Probleme mit AWT-EventQueue: ArrayList Elemente hinzufügen Allgemeine Java-Themen 1
E ArrayList Anzahl der gleichen Elemente Allgemeine Java-Themen 4
K Neue Elemente in JList einfügen Allgemeine Java-Themen 2
A Collections Array-Elemente in ArrayList kopieren ohne Schleife Allgemeine Java-Themen 7
S GUI - Drag & Drop Elemente Allgemeine Java-Themen 10
T OpenOffice Interface Elemente Ein/Ausblenden Allgemeine Java-Themen 5
D prüfen, ob Enums bestimmte Elemente enthalten Allgemeine Java-Themen 3
M Elemente aus ArrayList, die in ArrayList ist Allgemeine Java-Themen 2
S Alle Elemente von zwei Listen vergleichen Allgemeine Java-Themen 10
C Auf Oberflaechen Elemente zugreifen Allgemeine Java-Themen 8
H GUI: RectangleDrawer - zu viele Elemente im Vector für die paint-Methode Allgemeine Java-Themen 6
Iron Monkey Array-Elemente Allgemeine Java-Themen 9
S Array: Anzahl Elemente mit best. Wert zählen Allgemeine Java-Themen 4
R Elemente eines Vectors [Java 1.4] Allgemeine Java-Themen 5
B Liste auf gleiche Elemente untersuchen? Allgemeine Java-Themen 2
C Auf ArrayList Elemente referenzieren? Allgemeine Java-Themen 17
M Progblem bei Zugriff auf Array Elemente Allgemeine Java-Themen 4
der JoJo [TreeSelection] wie bekomme ich alle Elemente Allgemeine Java-Themen 4
G Alle Möglichkeiten n Elemente Anzuordnen. Allgemeine Java-Themen 13
M Elemente aus Liste entfernen? Allgemeine Java-Themen 7
Z Elemente in Vector nach Häufigkeit sortieren. Allgemeine Java-Themen 13
J Netbeans: wie auf grafische elemente zugreifen, andere Datei Allgemeine Java-Themen 2
B Nach Deserialisieren: Elemente des JFrames ohne Funktion Allgemeine Java-Themen 5
G Umkehrung der Array Elemente Allgemeine Java-Themen 2
K Elemente im ArrayList vergleichen Allgemeine Java-Themen 9
F Elemente überdecken sich! Allgemeine Java-Themen 13
G anzahl "verwendeter" elemente eines arrays ermitte Allgemeine Java-Themen 2
S alle elemente aus hashmap lesen Allgemeine Java-Themen 8
T Elemente eines Arrays mischen Allgemeine Java-Themen 5
C Collection, LinkedList, Elemente Allgemeine Java-Themen 4
O Text aus einer Textdatei rausholen, der zwischen zwei Schlüsselworten steht Allgemeine Java-Themen 4
V Umgang mit fehlenden Daten in einer Java-Datenanalyseanwendung Allgemeine Java-Themen 5
M Methodenübersicht einer Klasse einsehen Allgemeine Java-Themen 14
T JNA, Aufruf der Funktionen einer dll Allgemeine Java-Themen 5
I Vom Monolith zu Services in einer Webseite Allgemeine Java-Themen 1
W Variable Initialisierung mit dem Ergebnis einer Regex Allgemeine Java-Themen 1
O Werte einer Generic LinkedList zusammenrechenen Allgemeine Java-Themen 14
C Sortieren und Selektieren einer ArrayList<Point3D> Allgemeine Java-Themen 6
A Einzelne Objekte und Unterobjekte einer ArrayList ausgeben Allgemeine Java-Themen 53
TheSepp Wie kann man Leerzeichen aus einer Array liste entfernen? Allgemeine Java-Themen 10
B Ein Objekt einer Klasse mehreren anderen Klassen zur Verfügung stellen? Allgemeine Java-Themen 6
M Optimierung einer Methode (byte-Geraffel) Allgemeine Java-Themen 2
I Wie kann ich den Wert aus einer If abfrage ausgeben Allgemeine Java-Themen 23
S HTML einer Webseite 1:1 so bekommen wie es auch der Browser anzeigt? Allgemeine Java-Themen 14
melaniemueller Einzelne Zeile aus einer txt Datei in einem String speichern Allgemeine Java-Themen 12
L Java überprüfen lassen, ob sich ein gegebener Pfad / das Programm an sich auf einer CD oder Festplatte befindet Allgemeine Java-Themen 14
J (Geplante) Änderungen an einer Datei vorübergehend speichern und anwenden? Allgemeine Java-Themen 12
ME2002 Fragen aus einer Java Klausur Allgemeine Java-Themen 67
_user_q Obfuscate einer .jar-Datei mit ProGuard? Allgemeine Java-Themen 2
_user_q Verknüpfung einer .jar-Datei (liegt z. B. auf dem Desktop) im Autostart-Ordner erstellen? Allgemeine Java-Themen 20
C Parsen einer sich updatenden Html mithilfe von jsoup Allgemeine Java-Themen 4
E Eine Methode einer extendeten Klasse deakitivieren Allgemeine Java-Themen 12
H Performance einer Monte-Carlo-Simulation verbessern Allgemeine Java-Themen 6
LimDul Kam eine java.net.URL zu einer HashMap und ging als DNS Anfrage wieder heraus Allgemeine Java-Themen 18
E Variablen Nach Übergabe einer Variable den Constructor aufrufen Allgemeine Java-Themen 16
Zeppi NullPointerException in einer if-Abfrage Allgemeine Java-Themen 6
D Abbruch einer ViewScoped Bean in Arbeit Allgemeine Java-Themen 2
Lukas2904 Schleife mit ansteuerung einer Klasse Allgemeine Java-Themen 5
d.lumpi Aus Einer Klasse auf ein Objekt einer anderen Klasse Zugreifen Allgemeine Java-Themen 1
Lukas2904 Wie kann man cps (ClicksPerSecond) in einer GUI anzeigen lassen? Allgemeine Java-Themen 4
O Produziert das Tool "jpackage" (ab JDK 14) .exe Dateien, die auf einer Zielumgebung ohne JRE lauffähig sind ?` Allgemeine Java-Themen 7
R Lambda Expression in einer Methode execute() aufrufen (execute() ist eine Methode aus dem funktionalen Interface Command) Allgemeine Java-Themen 5
Drachenbauer wie kann ich alle instanzen einer Klasse durchsehen, ohne, dass diese in einer Liste erzeugt wurden? Allgemeine Java-Themen 11
N BlueJ Implementation einer Analoguhr Allgemeine Java-Themen 0
O Formatierte String ausgabe bei vier Variablen in einer Zeile Allgemeine Java-Themen 1
N Speicherort einer Datei im Explorer ändern Allgemeine Java-Themen 8
O Datentypen Wie kann ich den Typ einer ArrayList abfragen ? Allgemeine Java-Themen 7
O Leerzeichen und Umlaute im Pfad einer Java Applikation machen Probleme Allgemeine Java-Themen 13
H Mehrere PNG-Files in einer Datei Allgemeine Java-Themen 9
G Java Editor Löschen doppelter Zahlen einer Liste Allgemeine Java-Themen 2
J JSON Daten von einer Webseite erhalten Allgemeine Java-Themen 2
L RegEx für Teile einer Berechnung Allgemeine Java-Themen 14
L Erste Schritte TDD testen einer Methode mit injezierten Services? Allgemeine Java-Themen 12
J Zerlegen einer Zahl Allgemeine Java-Themen 6
Zrebna Wie kann man endgültig aus einer Rekursion ausbrechen? Allgemeine Java-Themen 14
MiMa Person in einer Arraylist hinzugügen mit Prüfung ? Allgemeine Java-Themen 6
Meeresgott Effizientester Weg um nach der Value einer verschachtelten Map aufzulösen Allgemeine Java-Themen 5
H Mehrere Datentypen in einer Arraylist speichern Allgemeine Java-Themen 9
MiMa Prüfziffer einer EAN Nummer berechnen Allgemeine Java-Themen 4
MiMa Erstellungsdatum einer Datei Allgemeine Java-Themen 10
Drachenbauer Wie kann ich einer existierenden Enum von außerhalb veränderte Werte zuweisen? Allgemeine Java-Themen 5
S HTML den ich von einer URL hole nicht identisch mit dem HTML im Browser Allgemeine Java-Themen 1
S Rückgabe einer HttpURLConnection für eine Seite einlesen bei der man eingeloggt ist..? Allgemeine Java-Themen 5
O Java-Applikation tut in Netbeans, als JAR nicht, wegen Pfadangaben einer benötigten Datei Allgemeine Java-Themen 8
M Hilfe bei einer Java Programmieraufgabe! Ab morgen Montag um 08:00 Uhr Allgemeine Java-Themen 5
J Algorithmen Analyse einer Schleife Allgemeine Java-Themen 6
Drachenbauer Wie finde ich den Aufrufer zu einer Methode, die sich nicht in meinem Projekt befindet? Allgemeine Java-Themen 2

Ähnliche Java Themen

Neue Themen


Oben