private void put(final Item i) {
		if (index > threshold) {
			int ll = items.length;
			int nl = ll * 2 + 1;
			Item[] newItems = new Item[nl];
			for (int l = ll - 1; l >= 0; --l) {
				Item j = items[l];
				while (j != null) {
					int index = j.hashCode % newItems.length;
					Item k = j.next;
					j.next = newItems[index];
					newItems[index] = j;
					j = k;
				}
			}
			items = newItems;
			threshold = (int) (nl * 0.75);
		}
		int index = i.hashCode % items.length;
		i.next = items[index];
		items[index] = i;
	}