interface Map<K,V>{
public V put(K k,V v);
public V get(K k);
public int size();
public interface Entry<K,V>{
public K getKey();
public V getValue();
}
}
public class MyHashMap<K,V> implements Map<K,V> {
private static int length=16;
private static double loader=0.75;
private static int size=0;
private Entry[] table=null;
public MyHashMap() {
this(length,loader);
}
public MyHashMap(int length,double loader) {
length=length;
loader=loader;
table=new Entry[length];
}
@Override
public V put(K k, V v) {
int i=k.hashCode()%length;
Entry<K,V> entry=table[i];
if(entry==null) {
table[i]=new Entry<K, V>(k, v, null);
}else {
table[i]=new Entry<K,V>(k,v,entry);
}
size++;
return (V)table[i].getValue();
}
@Override
public V get(K k) {
// TODO Auto-generated method stub
int i=k.hashCode()%length;
if(table[i]==null) {
return null;
}else {
Entry<K,V> entry=table[i];
while(entry.next!=null) {
if(k==entry.getKey()&&k.equals(entry.getKey())) {
return entry.v;
}
}
}
return null;
}
@Override
public int size() {
// TODO Auto-generated method stub
return size;
}
class Entry<K,V> implements Map.Entry<K,V>{
K k;
V v;
Entry<K,V> next;
public Entry(K k,V v,Entry<K,V> next){
this.k=k;
this.v=v;
this.next=next;
}
@Override
public K getKey() {
return k;
}
@Override
public V getValue() {
return v;
}
}
}