Methode erklären

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());
                }
            }
        }
    }
https://en.wikipedia.org/wiki/Hash_table#Separate_chaining_with_linked_lists
https://de.wikipedia.org/wiki/Hashtabelle#Hashing_mit_Verkettung
https://www.geeksforgeeks.org/hashing-set-2-separate-chaining/



Und Variablennamen bitte immer klein schreiben.
 

Zurück
Oben