Java Implementation
\nclass MyHashSet {\n    \n    final int TOTAL_BUCKETS = 769; //prime number for almost even distribution across\n    List<Integer>[] buckets;\n\n    public MyH
```\nclass MyHashSet {\n    \n    final int TOTAL_BUCKETS = 769; //prime number for almost even distribution across\n    List<Integer>[] buckets;\n\n    public MyHashSet() {\n        buckets = new ArrayList[TOTAL_BUCKETS];\n        \n        for(int index = 0; index < TOTAL_BUCKETS; ++index)\n            buckets[index] = new ArrayList<Integer>();\n    }\n    \n    public void add(int key) {\n        if(contains(key))\n            return;\n        \n        int hashIndex = hashCode(key);\n        buckets[hashIndex].add(key);\n    }\n    \n    public void remove(int key) {\n        int hashIndex = hashCode(key);\n        List<Integer> theRightBucket = buckets[hashIndex];\n        \n        if(theRightBucket.size() == 0)\n            return;\n        \n        for(int index = 0; index < theRightBucket.size(); ++index) {\n            if(theRightBucket.get(index) == key)\n                theRightBucket.remove(index);\n        }\n    }\n    \n    public boolean contains(int key) {\n        int hashIndex = hashCode(key);\n        List<Integer> theRightBucket = buckets[hashIndex];\n        \n        if(theRightBucket.size() == 0)\n            return false;\n        \n        for(Integer slot: theRightBucket)\n            if(slot == key)\n                return true;\n        \n        return false;\n    }\n    \n    private int hashCode(int key) {\n        return key % TOTAL_BUCKETS;\n    }\n}\n\n/**\n * Your MyHashSet object will be instantiated and called as such:\n * MyHashSet obj = new MyHashSet();\n * obj.add(key);\n * obj.remove(key);\n * boolean param_3 = obj.contains(key);\n */\n```
['Hash Table', 'Java']