我试图理解使用 Java 的线性探测哈希表的实现。然而,我对为什么 M 的初始值被赋予 30001 感到沮丧。代码的骨架如下。
public class LinearProbingHashTable<Key, Value>{
private int M = 30001;
private Value[] vals = (Value[]) new Object[M];
private Key[] keys = (Key[]) new Object[M];
private int hash(Key key){...}
public void put(Key key, Value val){...}
public Value get(Key key){...}
}
我的问题是为什么M在这里初始化为30001。这是经验法则吗?初始化线性探测哈希表时如何确定M的大小?
最佳答案
您必须知道这部分代码的用途,才能更好地理解这一点。也许,或者很可能,键在 [0, 30000] 范围内。
<小时/>进一步阅读:
关于java - 线性探测哈希表中数组 M 的大小应该有多大?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20774220/