2017-02-26 3 views
1

Ich studiere Hash-Tabellen und ich habe einen Zweifel, in dem wir die Anzahl der Daten Buckets verwendet (primäre und Überlauf).Berechnung der Anzahl der Daten Buckets in Hash-Tabellen verwendet

Es ist eine lineare Hash-Tabelle mit i = 3 (Anzahl der Bits verwendet) und wenn die größte Bucket-Adresse verwendet (in Bits) = '110' und es gibt 2 Überlauf Buckets verwendet.

Was ist die Logik der Berechnung einer Hash-Tabelle Bucket Count?

Können Sie die Formel erklären oder einen Link dazu angeben?
Vielen Dank im Voraus!

+0

Es ist eine interessante Frage über Fundementals, bitte formulieren Sie die Frage zu einer tatsächlichen Frage, wie, "Was ist die Logik der Berechnung einer Hash-Tabelle Eimer zählen" – Tschallacka

+0

getan Vielen Dank für Ihre freundlichen Rat .. es ist mein erstes Mal hier stackoverflow .. ich lerne immer noch: D – Anish

+0

Sprichst du über die Gesamtzahl der Buckets inklusive Kollisionen, die hashtable.size() wären oder zuletzt verwendeter Bucket, sagen wir 15 Bucket (gefüllt) im Falle einer Hashtable der Größe 16 (0 to 15)? – skY

Antwort

0

Wenn Sie Implementierungsklassen von Java zur Verfügung gestellt verwenden, dann können Sie hashtable.size() verwenden, aber wenn Sie noch wollen, dass es zählen, selbst dann

Iterator i = hashTable.entrySet().iterator(); 
int count = 0; 

    while(i.hasNext()) 
    { 
     count++; 
     i.next(); 
    } 

System.out.println(count); 

Wenn Sie Ihre benutzerdefinierte Implementierung areusing dann

private Entry<K,V>[] table; //Array of Entry. 
private int capacity= 16; //Initial capacity of Hashmap 
int count = 0; 
for(int i=0;i<capacity;i++){ 
     if(table[i]!=null){ 
       Entry<K, V> entry=table[i]; 
       while(entry!=null){ 
        count++; 
        entry=entry.next; 
       } 
     } 
    } 
Syso(count); 

Hier habe ich nicht die Synchronisation berücksichtigt, die im Falle von Hashtable wesentlich ist.

Verwandte Themen