计算哈希表中使用的数据桶的数量

时间:2017-02-26 23:52:48

标签: hashtable

我正在研究Hash Tables,我怀疑我们必须计算使用的数据桶数量(主要和溢出)。

这是一个线性哈希表,其中i = 3(使用的位数),如果使用的最大桶地址(以位为单位)='110',则使用了2个溢出桶。

计算哈希表桶计数的逻辑是什么?

您能解释一下这个公式吗?或者请提供一些与此相关的链接 提前谢谢!

1 个答案:

答案 0 :(得分:0)

如果您正在使用Java提供的实现类,那么您可以使用hashtable.size(),但如果您仍想自己计算,那么

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

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

System.out.println(count); 

如果您正在使用自定义实现,那么

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);

这里我没有考虑在哈希表的情况下必不可少的同步。