最近在学习hash表,自己写了一个简单的java实现。
public class entry<k,v>{
int capacity;
node[] no;
public entry(int n) {
capacity=n;
no=new node[n];
}
//链表类
class node<k,v>{
k key;
v value;
node<k,v> next;
public node() {
}
node(k key,v value,node<k,v> next){
this.key=key;
this.value=value;
this.next=next;
}
}
//计算hash值
int hashcode(k key){
return (key.hashCode()&0x7ffffff)%capacity;
}
public void put(k key,v value) {
int h=hashcode(key);
for (node<k,v> n = no[h]; n!=null; n=n.next) {
if (key.equals(n.key)) {
n.value=value;
return;
}
}
node<k,v> old=no[h];
no[h]=new node(key, value, old);
}
public v get(k key) {
int h=hashcode(key);
if (no[h]==null) {
return null;
}
for (node<k,v> n = no[h]; n!=null; n=n.next) {
if (key.equals(n.key)) {
return n.value;
}
}
return null;
}
}