protected void rehash() {
		capacity *= 2;
		Entry<K, V>[] old = bucket;
		bucket = (Entry<K, V>[]) new Entry[capacity];
		setRandomScaleAndShift();// calling hash function index will be
									// different
		for (int i = 0; i < old.length; i++) {
			Entry<K, V> e = old[i];
			if ((e != null) && (e != available)) {
				int j = -1 - findEntry(e.getKey());
				bucket[j] = e;
			}
		}

	}