美文网首页
一个简单的HashTable

一个简单的HashTable

作者: xin激流勇进 | 来源:发表于2019-05-10 14:46 被阅读0次
    package structures;
    
    import java.util.TreeMap;
    
    public class HashTable<K, V> {
        private TreeMap<K, V>[] hashtable;
        private int M;
        private int size;
    
        public HashTable(int M) {
            this.M = M;
            size = 0;
            hashtable = new TreeMap[M];
            for (int i = 0; i < M; i++) {
                hashtable[i] = new TreeMap<>();
            }
        }
    
        public HashTable() {
            this(97);
        }
    
        private int hash(K key) {
            return (key.hashCode() & 0x7fffffff) % M;
        }
    
        public int getSize() {
            return size;
        }
    
        public void add(K key, V value) {
            TreeMap<K, V> map = hashtable[hash(key)];
            if (map.containsKey(key)) {
                map.put(key, value);
            } else {
                map.put(key, value);
                size ++;
            }
        }
    
        public V remove(K key) {
            V res = null;
    
            TreeMap<K, V> map = hashtable[hash(key)];
    
            if (map.containsKey(key)) {
                res = map.remove(key);
                size ++;
            }
    
            return res;
        }
    
        public void set(K key, V value) {
            TreeMap<K, V> map = hashtable[hash(key)];
            if (!map.containsKey(key)) {
                throw new IllegalArgumentException("key is not exists");
            }
    
            map.put(key, value);
        }
    
        public boolean contains(K key) {
            return hashtable[hash(key)].containsKey(key);
        }
    
        public V get(K key) {
            return hashtable[hash(key)].get(key);
        }
    }
    
    

    相关文章

      网友评论

          本文标题:一个简单的HashTable

          本文链接:https://www.haomeiwen.com/subject/umdaoqtx.html