자바로 해시테이블 구현해봄... c++ 로 구현해본지가 7년전이네;;
중복된 해시나왔을때 해결방법은 구현하지 않았다
public class MyHashTable <T>{
public class Element<T>{
int key;
T value;
Element(int key, T value)
{
this.key = key;
this.value = value;
}
T getValue()
{
return value;
}
}
Element HashTable[];
MyHashTable(int size)
{
HashTable = new Element[size];
}
int KeyGen(T key)
{
int numKey = 0;
if(key.getClass().getSimpleName().equals("String"))
{
String strTemp = (String)key;
for(int i = 0; i < strTemp.length(); ++i)
{
numKey += (int)(strTemp.charAt(i));
}
numKey %= HashTable.length;
}
else
{
numKey = (int)key % HashTable.length;
}
return numKey;
}
void Put(T key, T value)
{
int numKey = KeyGen(key);
HashTable[numKey] = new Element<T>(numKey, value);
}
T Get(T key)
{
int numKey = KeyGen(key);
if(HashTable[numKey] != null)
return (T) HashTable[numKey].getValue();
else
return null;
}
void Remove(T key)
{
int numKey = KeyGen(key);
if(HashTable[numKey] != null)
{
HashTable[numKey] = null;
}
}
}