자바로 해시테이블 구현해봄... 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;
        }
    }
}
profile
게임개발자 백엔드개발자

0개의 댓글