Hola
CalgaryCorpus estuve viendo el error y el problema está con las malditas colisiones, y la solución está en lo que algunos llaman separate chaining.
Pero cómo lo implemento??
Código Java:
Ver original@Override
public V put(K key, V value) {
if(key != null){
int hash = hash(key,table.length);
for(Entry<K,V> e = table[hash]; e != null; e = e.next){
if(e.getKey().equals(key)){
V oldValue = e.getValue();
e.setValue(value);
return oldValue;
}
}
this.addEntry(key, value);
return value;
} else {
return null;
}
}
private void addEntry(K key, V value){
if(size >= table.length * 1/2){
Entry<K,V>[] tmp = table;
size = 0;
table
= Arrays.
copyOf(table, table.
length * 2); for(int i = 0; i < table.length; i++){
table[i] = null;
}
for (Entry<K, V> e : tmp) {
if(e != null){
put(e.getKey(),e.getValue());
}
}
}
int hash = hash(key,table.length);
table[hash] = new Entry(key, value,table[hash]);
size++;
}
Porque así tengo para agregar entradas al array, pero ¿cómo rayos implemento el separate chaning? porque con eso resuelvo ese problema.
Espero sus respuestas y saludos.