好的,所以我有一个类将字典文件读入哈希表,比较用户输入的字词并返回建议的字词。我的程序实现了一个HashTable,它使用链表来为值创建存储桶。我已完成程序,我无法开发一种方法来打印最大链长,表中使用的桶的百分比和平均链长。
public class DictionaryTable {
public String workingDir = System.getProperty("user.dir");//stores uses working director
public String DICT_FILENAME = "\\src\\dictionary.txt";
public String D_PATH = workingDir + DICT_FILENAME;
private int DICT_SIZE; //determines size of dictionary
final private Bucket[] array;
包含上面的方法,以了解我的类和哈希函数中使用的私有变量。我还提供了我的哈希以防万一它需要。
private int hash(String key) {
return (key.hashCode() & 0x7fffffff) % DICT_SIZE;
}
答案 0 :(得分:0)
我在开发确定负载系数的方法时遇到了麻烦,
加载因子是在您将表加倍之前允许在哈希表中插入的键数。例如。如果你的桌子的大小是32,你的负载系数是50%,那么当你有16个元素时,你的桌子会翻倍 加载因子可以是哈希表的客户端传递的参数,即配置,也可以有一个默认值,在实际实现中是一个取决于哈希表变量的值(通常值为~75%)
最大链长
您不应考虑链长而是负载因子(请参阅上一段)。决定链条长度并不是一个好主意,因为你最终会因为1桶已经饱和而使你的桌子加倍了#34;你表的其余部分都可以。
我表中使用的桶的百分比
你无法确定。您的哈希函数及其有多好决定了分布。除非你有一个非常好的哈希函数,否则你将无法在哈希表中使用大部分桶(聚类效果)
平均链长。
这又取决于你的哈希函数和冲突。你做不确定这一点。