Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
In der Aufgabe geht es um ein Programm, mittels einer Hashtabelle der Index von Kfz-Kennzeichen ermittelt werden soll und in einer Liste gespeichert werden soll.
Dabei gab es folgende Methode
Code:
public void loesche(String KfzKennzeichen) {
int Index = berechneIndex(KfzKennzeichen);
if (meineTabelle[Index] != null) {
Element einElement = meineTabelle[Index];
if(einElement.getKfzKennzeichen().equals(KfzKennzeichen)){
meineTabelle[Index] = einElement.getNaechstesElement();
}
else
{
Element Vorgaenger = einElement;
einElement = einElement.getNaechstesElement();
while(einElement != null && !einElement.getKfzKennzeichen().equals(KfzKennzeichen))
{
Vorgaenger = einElement;
einElement = einElement.getNaechstesElement();
}
if(einElement != null) {
Vorgaenger.setNaechstesElement
(einElement.getNaechstesElement());
}
}
}
}
Kann mir jemand die Methode löschen einfach mla Zeile für Zeile erklären?
Ich verstehe grob, wie es funktioniert. Aber eben nur grob...
Hoffe jemand hier kann mir helfen
Hast du das verwendete Prinzip der Kollisionsvermeidung in der Mapimplementierung verstanden?
Wenn du "Separate Chaining" verstanden hast, ist die Methode mehr oder weniger selbsterklärend.
Deswegen füg ich mal nur 3-4 Kommentare ein.
Java:
public void loesche(String KfzKennzeichen) {
// Index des Buckets berechnen
int Index = berechneIndex(KfzKennzeichen);
if (meineTabelle[Index] != null) {
//Bucket-Element ermitteln
Element einElement = meineTabelle[Index];
// Das Bucket-Element ist das gesuchte Element. Also den Nachfolger des Elementes in den Bucket schreiben.
// Das gesuchte Element wird damit vergessen / gelöscht
if(einElement.getKfzKennzeichen().equals(KfzKennzeichen)){
meineTabelle[Index] = einElement.getNaechstesElement();
}
//Gesuchtes Element befindet sich nicht direkt im Bucket. Also in der Liste der Elemente suchen, (die alle den gleichen Hashwert haben)
else
{
Element Vorgaenger = einElement;
einElement = einElement.getNaechstesElement();
//Liste der Nachfolger durchlaufen bis Element gefunden wurde
while(einElement != null && !einElement.getKfzKennzeichen().equals(KfzKennzeichen))
{
Vorgaenger = einElement;
einElement = einElement.getNaechstesElement();
}
//Element wurde gefunden. Analog zu oben löschen
if(einElement != null) {
Vorgaenger.setNaechstesElement
(einElement.getNaechstesElement());
}
}
}
}