Hola
CalgaryCorpus y a todos, estuve mirando lo de hashCode y encontré esto:
Código Java:
Ver originalprivate int getIndex
(Object key
) { int ret = key.hashCode() % table.length;
if(ret < 0) {
ret += table.length;
}
return ret;
}
El cual andar anda, pero cuando quiero agregar más de 4 elementos me hace esto por consola:
---PROBANDO MAP2---
tamaño -> 7
--valores--
John
Paula
Andrea
--claves--
4
1
6
--entradas--
clave -> 4 valor -> John
clave -> 1 valor -> Paula
clave -> 6 valor -> Andrea
cuando en el map2 agregue esto:
Código Java:
Ver originalMyMap
<Integer,String
>m2
= new MyMap
(2); m2.put(1, "Paula");
m2.put(2, "Pedro");
m2.put(3, "Fabio");
m2.put(4, "John");
m2.put(5, "Manuela");
m2.put(6, "Andrea");
m2.put(7, "Luisa");
Por otro lado hice un pequeño cambio a addEntry xq cómo estaba haciendo de que duplica cuando la cantidad actual es igual al largo es ineficiente debido a la lentitud del mismo, y tuve que cambiar la condición:
Código Java:
Ver original@Override
public V put(K key, V value) {
if(key != null){
int index = this.getIndex(key);
if (table[index]!= null && table[index].getKey().equals(key)) {
V oldValue = table[index].getValue();
table[index].setValue(value);
return oldValue;
}
this.addEntry(key, value, index);
return value;
}
return null;
}
private void addEntry(K key, V value, int index){
if(size >= table.length * 3/4){
table
= Arrays.
copyOf(table, table.
length * 2); }
table[index] = new Entry(key, value);
size++;
}
En esta página lo explica mejor:
http://www.toves.org/books/data/ch06-hash/
A mi getIndex que tiene el código del hashCode le falta algo pero no sé que, no sé que pueden decir.
Espero sus respuestas y saludos.