packageorg.lyk.impl;importjava.util.ArrayList;importorg.lyk.interfaces.IMap;public class HashMap implements IMap{private classKeyValue
{privateK key;privateV value;publicKeyValue(K key, V value)
{this.key =key;this.value =value;
}publicK getKey()
{returnkey;
}public voidsetKey(K key)
{this.key =key;
}publicV getValue()
{returnvalue;
}public voidsetValue(V value)
{this.value =value;
}
}private int maxSize = 10;privateObject[] table;publicHashMap()
{this.table = new Object[this.maxSize];for(int i = 0; i < this.maxSize; i++)
{this.table[i] = new java.util.ArrayList();
}
}
@Overridepublic voidput(K key, V value)
{int index = this.getIndex(key);
KeyValue kv= this.find(key);if(kv == null)
{
((java.util.List)this.table[index]).add(newKeyValue(key, value));
}else{
kv.setValue(value);
}
}
@Overridepublic booleanremove(K key)
{int index = this.getIndex(key);
java.util.List kvs = (java.util.List)this.table[index];int listIndex = -1;for(KeyValue kv : kvs)
{if(kv.key.equals(key))
{
listIndex=kvs.indexOf(kv);
}
}if(listIndex != -1)
{
kvs.remove(listIndex);return true;
}return false;
}
@OverridepublicV get(K key)
{
KeyValue kv= this.find(key);if(kv != null)returnkv.getValue();else
return null;
}
@Overridepublic booleancontains(K key)
{if(this.get(key) != null)return true;else
return false;
}
@Overridepublic voidreplace(K key, V value)
{
KeyValue kv= this.find(key);if(kv != null)
{
kv.setValue(value);
}
}private intgetIndex(K key)
{return Math.abs(key.hashCode())%this.maxSize;
}privateKeyValue find(K key)
{int index = this.getIndex(key);
java.util.List kvs = (java.util.List)this.table[index];for(KeyValue kv : kvs)
{if(kv.key.equals(key))
{returnkv;
}
}return null;
}
}