Hola
Tipdar verás la estructura está casi hecha tuve que hacer un truco medio chancho para continuar con el resto de las funcionalidades del HashMap casero:
Código Java:
Ver originalprivate int getIndex
(Object key
) { return (key.hashCode() & 0x7FFFFFFF) % table.length -1;
}
Tuve que restarle 1 para obtener el índice pero sé que eso no está bien, por otro lado cuando le pongo un tamaño por defecto y luego necesito agrandarlo me da este problema en la consola:
indice -> 0
indice -> 1
indice -> 2
indice -> -1
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: -1
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
); 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 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++;
}
El resto de la estructura está hecha, ya pongo el código por si a alguien le interesa:
https://pastebin.com/QywGK6g8
Creo que quedaría esa parte del código para decir está listo.
Espero sus respuestas y Saludos