Hola
CalgaryCorpus justamente eso es lo que no quiero, lo había hecho para continuar con el desarrollo del HashMap, pero ahora me veo en que necesito que me obtenga bien el índice sin la resta pero no me sale bien, no tengo un plan cómo para hacerlo andar.
Por otro lado también tengo problemas en caso de que por ejemplo: tengo dicho map de tamaño 4 por defecto pero me da error cuando quiero agregar en la posición 3 y no me deja.
Los que andan son put, getIndex, setEntry (provisorio de momento, xq cuando haga andar bien los otros 2, trataré de deshacerme de él).
Código Java:
Ver original@Override
public V put(K key, V value) {
if(key == null){
return null;
} else {
int index = getIndex(key);
System.
out.
println("indice -> "+ index
); Entry<K, V> pair = table[index];
if (pair != null && pair.getKey().equals(key)) {
V oldValue = pair.getValue();
pair.setValue(value);
return oldValue;
}
setEntry(key, value, index);
return value;
}
}
private int getIndex
(Object key
) { return (key.hashCode() & 0x7FFFFFFF) % table.length;
}
private void setEntry(K key, V value, int index) {
Entry<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 Entry(key, value);
size++;
}
Espero sus respuestas y Saludos.