/** * @param key the key to be searched in the receiver. * @return the index where the key is contained in the receiver, returns -1 if the key was not found. */ protected int indexOfKey(T key) { final int length = table.length; final int hash = key.hashCode() & 0x7FFFFFFF; int i = hash % length; int decrement = hash % (length - 2); // double hashing, see http://www.eece.unm.edu/faculty/heileman/hash/node4.html //int decrement = (hash / length) % length; if (decrement == 0) { decrement = 1; } // stop if we find a free slot, or if we find the key itself. // do skip over removed slots (yes, open addressing is like that...) while (state[i] != FREE && (state[i] == REMOVED || !equalsMindTheNull(table[i], key))) { i -= decrement; //hashCollisions++; if (i < 0) { i += length; } } if (state[i] == FREE) { return -1; } // not found return i; //found, return index where key is contained }
while (state[i] == FULL && !equalsMindTheNull(table[i], key)) { i -= decrement; while (state[i] != FREE && (state[i] == REMOVED || !equalsMindTheNull(table[i], key))) { i -= decrement;
/** * @param key the key to be searched in the receiver. * @return the index where the key is contained in the receiver, returns -1 if the key was not found. */ protected int indexOfKey(T key) { final int length = table.length; final int hash = key.hashCode() & 0x7FFFFFFF; int i = hash % length; int decrement = hash % (length - 2); // double hashing, see http://www.eece.unm.edu/faculty/heileman/hash/node4.html //int decrement = (hash / length) % length; if (decrement == 0) { decrement = 1; } // stop if we find a free slot, or if we find the key itself. // do skip over removed slots (yes, open addressing is like that...) while (state[i] != FREE && (state[i] == REMOVED || !equalsMindTheNull(table[i], key))) { i -= decrement; //hashCollisions++; if (i < 0) { i += length; } } if (state[i] == FREE) { return -1; } // not found return i; //found, return index where key is contained }
/** * @param key the key to be searched in the receiver. * @return the index where the key is contained in the receiver, returns -1 if the key was not found. */ protected int indexOfKey(T key) { final int length = table.length; final int hash = key.hashCode() & 0x7FFFFFFF; int i = hash % length; int decrement = hash % (length - 2); // double hashing, see http://www.eece.unm.edu/faculty/heileman/hash/node4.html //int decrement = (hash / length) % length; if (decrement == 0) { decrement = 1; } // stop if we find a free slot, or if we find the key itself. // do skip over removed slots (yes, open addressing is like that...) while (state[i] != FREE && (state[i] == REMOVED || !equalsMindTheNull(table[i], key))) { i -= decrement; //hashCollisions++; if (i < 0) { i += length; } } if (state[i] == FREE) { return -1; } // not found return i; //found, return index where key is contained }
while (state[i] == FULL && !equalsMindTheNull(table[i], key)) { i -= decrement; while (state[i] != FREE && (state[i] == REMOVED || !equalsMindTheNull(table[i], key))) { i -= decrement;
while (state[i] == FULL && !equalsMindTheNull(table[i], key)) { i -= decrement; while (state[i] != FREE && (state[i] == REMOVED || !equalsMindTheNull(table[i], key))) { i -= decrement;