public class SeparateChaingHashST<Key extends Comparable<Key>,Value> {
private int N; //key-value;
private int M;
private sequnceSearch<Key,Value> []st;
public SeparateChaingHashST(){
this(997);
}
public SeparateChaingHashST(int M){
this.M = M ;
st = (sequnceSearch<Key, Value>[])new sequnceSearch[M];
for(int i=0;i<st.length;i++){
st[i] = new sequnceSearch<Key,Value>();
}
}
private int hash(Key key){
return (key.hashCode()&0x7fffffff)%M;
}
public Value get(Key key){
return st[hash(key)].get(key);
}
public void put(Key key,Value val){
st[hash(key)].put(key,val);
}
}
这个算法实现很简单 :当散列表冲突时 ,我们重开一条链表。 其实sequnceSerarch这个类就是基于链表实现的 ,实现的一个符号表 ,用于get 和 put