我试图了解使用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的大小?