Les cuento que encontrando una función hashCode me solucionó un poco el problema:
private int getIndex(Object key) {
return (key.hashCode() & 0x7FFFFFFF) % table.length;
}
pero me dio este resultado:
indice -> 1
indice -> 2
indice -> 3
indice -> 4
cuando tendría que hacer esto:
indice -> 0
indice -> 1
indice -> 2
indice -> 3
No sé si cambiar o agregar cosas en la Pair
Código Java:
Ver originalclass Pair<K,V> {
final K key;
V value;
Pair(K k, V v) {
value = v;
key = k;
}
public final K getKey() {
return key;
}
public final V getValue() {
return value;
}
@Override
return getKey() + "=" + getValue();
}
}
o cambiar algo de los métodos para guardar la entrada en mi tablahash
Código Java:
Ver originalpublic V put(K key, V value) {
if(key == null){
return null;
} else {
int index = getIndex(key);
System.
out.
println("indice -> "+ index
); 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;
}
}
private int getIndex
(Object key
) { return (key.hashCode() & 0x7FFFFFFF) % table.length;
}
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++;
}
Espero sus respuestas y Saludos.