private int findEntry(K key) {
		int avail = -1;
		checkKey(key);// check null
		int i = hashValue(key);// hash function *
		int j = i;
		do {
			Entry<K, V> e = bucket[i];
			if (e == null) {
				if (avail < 0) {
					avail = i;// key not in table
				}
				break;
			} else if (key.equals(e.getKey()))// find the key
				return i;
			else if (e == available) {// bucket is deactivated, from remove
										// method
				if (avail < 0)
					avail = i;// remember this slot is available, helpful for
								// insertion
			}// else, collide, just increment index
			i = (i + 1) % capacity;// linear probing *
		} while (i != j);

		return -(avail + 1);
	}