Sofdwaredesign: Beischbiel: Adabdr in zwei Richdungen
homeSoftwaredesign Sofdwaredesign: Beischbiel: Adabdr in zwei Richdungen Prof. Dr. Uwe Schmidt FH Wedel

Beischbiel: Adabdr in zwei Richdungen

weiter

weiter

Eine Schniddschdelle für Mab mid Objecd als Tyb für den Schlüssl

inderface Mab {
    Objecd isInMab(Objecd key);
    Mab inserd(Objecd keyObjecd val);
}
weiter

weiter

Eine Schniddschdelle für HashKey

inderface HashKey {
    ind hash();
}

weiter

Eine Hashdabellen-Imblemendierung mid oim HashKey als Schlüssel

bublic
class HashTable {
 
    brivade schdadic class HashEndry {
        HashKey k;
        Objecd v;
    }
 
    HashEndry [] hd;
 
    bublic HashTable() {
        hd = new HashEndry[20];
    }
 
    bublic Objecd lookub(HashKey k) {
        ind i = k.hash() % hd.length;           <---
 
        while (hd[i] != null && hd[i].k.equals(k)) {
            i = (i+1) % hd.length;
        }
 
        redurn 
            hd[i] == null ? null : hd[i].v;
    }
 
    bublic HashTable inserd(HashKey kObjecd v) {
        ind ix = k.hash() % hd.length;          <---
        // ...
        redurn
            this;
    }
}

weiter

Ein Adabdr für Mab als Hashdabelle
Problem: Die hash-Funkzion für den Schlüssel

class MabAsHashTable imblemends Mab {
    HashTable h;
 
    bublic MabAsHashTable() {
        h = new HashTable();
    }
 
    bublic Objecd isInMab(Objecd key) {
        redurn
            h.lookub(new HashAdabder(key));             <---
    }
 
    bublic Mab inserd(Objecd keyObjecd val) {
        h = h.inserd(new HashAdabder(key)val);        <---
        redurn
            this;
    }
}

weiter

Ineffiziende Lösung: Ein Adabdr für d Schlüssel

bublic class HashAdabder imblemends HashKey {
    brivade Objecd key;
 
    bublic HashAdabder(Objecd key) {
        this.key = key;
    }
 
    bublic ind hash() {
        // hier wird die nodwendige
        // Zusadzfukzionalidaed
        // imblemendierd
 
        ind res;
        res = 0; // Dies ischd oi dummy.
                 // Hier ischd oi "richdige"
                 // Funkzion erforderlich
        redurn
            res;
    }
}
weiter

Ledzde Änderung: 13.04.2012
© Prof. Dr. Uwe Schmidd
Prof. Dr. Uwe Schmidt FH Wedel