/** Search the key in a specific bucket. Returns -1 if the key does not existed. */ privateintgetPos(int key, int index) { // Each bucket contains a list. List<Integer> temp = set[index]; if (temp == null) { return -1; } // Iterate all the elements in the bucket to find the target key. for (inti=0; i < temp.size(); ++i) { if (temp.get(i) == key) { return i; } } return -1; }
/** Initialize your data structure here. */ publicMyHashSet() { set = (List<Integer>[])newArrayList[MAX_LEN]; }
publicvoidadd(int key) { intindex= getIndex(key); intpos= getPos(key, index); if (pos < 0) { // Add new key if key does not exist. if (set[index] == null) { set[index] = newArrayList<Integer>(); } set[index].add(key); } }
publicvoidremove(int key) { intindex= getIndex(key); intpos= getPos(key, index); if (pos >= 0) { // Remove the key if key exists. set[index].remove(pos); } }
/** Returns true if this set did not already contain the specified element */ publicbooleancontains(int key) { intindex= getIndex(key); intpos= getPos(key, index); return pos >= 0; } }
/** * Your MyHashSet object will be instantiated and called as such: * MyHashSet obj = new MyHashSet(); * obj.add(key); * obj.remove(key); * boolean param_3 = obj.contains(key); */