Buenas a todos, estuve mirando el código que encontré y lo que me falla son los índices que me obtienen las funciones nunca me ponen en la posición 0 cuando se agregan por primera vez elementos de la tablahash:
Código Java:
Ver originalpublic V put(K key, V value) {
if(key == null){
return null;
}
int index = getIndex(key); // acá no me obtiene el índice correcto me obtiene cualquier cosa
Pair<K, V> pair = table[index];
if (pair != null && (pair.key == key || pair.key.equals(key))) {
V oldValue = pair.value;
pair.value = value;
return oldValue;
}
setPair(key, value, index);
return value;
}
// funcion para obtener el hashCode de la clave
private int hashFunction
(Object key
) { if (key == null)
return 0;
int summation = 0;
for (int i = 0; i < str.length(); i++)
summation += str.charAt(i);
return summation;
}
// función para obtener el índice
private int getIndex
(Object key
) { int hash = hashFunction(key);
return hash % capacity;
}
private void setPair(K key, V value, int index) {
Pair<K, V> e = table[index];
while (e != null) {
index++;
if (index >= capacity) {
table
= Arrays.
copyOf(table, table.
length +1); put(key,value);
return;
}
e = table[index];
}
table[index] = new Pair<>(key, value);
size++;
}
El punto es que busqué en internet y no encontré una solución acorde a lo que quiero y lo peor es que usan de forma parecida para obtener los índices de los hash....
Por favor, alguna respuesta, la agradeceré.