FrazeColder
Lt. Commander
- Registriert
- Okt. 2013
- Beiträge
- 1.721
Guten Tag Community,
Ich habe da ein Problem...
Ich habe soweit die Aufgabe fertig, solange ich nicht mehr als zwei mal auf ein nächstes Feld referenzieren muss...
Wir sollen, falls der HashValue schon vorhanden ist, auf das nächst freie Feld referienzieren.
Doch wie kann ich solange durchchecken, ob dieses Feld auf das schon referenziert wurde, nicht weiter referenziert und von da dann meine neue Referenz setzen?
Key = Deutsche Wort und Value = Englisches Wort.
Soll eine Art Wörterbuch werden.
MfG und Danke
Ich habe da ein Problem...
Ich habe soweit die Aufgabe fertig, solange ich nicht mehr als zwei mal auf ein nächstes Feld referenzieren muss...
Wir sollen, falls der HashValue schon vorhanden ist, auf das nächst freie Feld referienzieren.
Doch wie kann ich solange durchchecken, ob dieses Feld auf das schon referenziert wurde, nicht weiter referenziert und von da dann meine neue Referenz setzen?
Key = Deutsche Wort und Value = Englisches Wort.
Soll eine Art Wörterbuch werden.
Code:
package Hashtabelle;
public class HashTabelle {
private Datensatz[] daten;
private int ordnung;
public HashTabelle(int kapazitaet, int ordnung) {
this.ordnung = ordnung;
this.daten = new Datensatz[kapazitaet];
}
private int getHashValue(String key) {
char[] temp = key.toCharArray();
int h = 0;
int n = ordnung;
for (int i = 0; i < temp.length; i++) {
h = (h * 256 + temp[i]) % n;
}
if(h > daten.length){
int[] newArray = new int[h];
daten.clone();
}
return h;
}
private Integer getFreeIndex(int belegterIndex) {
if (daten[belegterIndex] == null) {
return belegterIndex;
} else {
while (daten[belegterIndex] != null) {
belegterIndex++;
}
return belegterIndex;
}
}
public boolean set(String key, String value) { // value == englisches Wort; // key == deutsches Wort
Integer hashValue = getHashValue(key);
if (daten[hashValue] == null) {
daten[hashValue] = new Datensatz(key, value, null);
return true;
} else {
int nextFreePos = getFreeIndex(hashValue);
daten[hashValue].setReferenz(nextFreePos); //HIER MUSS ICH WAS ÄNDEN!!!
daten[nextFreePos] = new Datensatz(key, value, null);
return true;
}
}
public String getValueForKey(String key) {
if (key.compareTo(daten[getHashValue(key)].getKey()) != 0) {
Integer newHasValue = daten[getHashValue(key)].getReferenz();
String value = daten[newHasValue].getValue();
return value;
}
return daten[getHashValue(key)].toString();
}
public String toString() {
for(int i = 0; i < daten.length; i++){
if(daten[i] == null){
i++;
}else{
System.out.println(daten[i].toString());
}
}
return null;
}
}
MfG und Danke