Ver Mensaje Individual
  #7 (permalink)  
Antiguo 04/06/2017, 20:25
Avatar de detective_jd
detective_jd
 
Fecha de Ingreso: abril-2011
Ubicación: Salto
Mensajes: 437
Antigüedad: 13 años
Puntos: 6
Respuesta: TablaHash y sus pasos

Hola CalgaryCorpus en base al test de los Set es que me dí cuenta del problema de las colisiones, pero estoy casi con el problema resuelto:

Código Java:
Ver original
  1. private void addEntry(K key, V value){
  2.         if(size >= table.length * 0.75){
  3.             Entry<K,V>[] tmp = table;
  4.             size = 0;
  5.             table = Arrays.copyOf(table, table.length * 2);
  6.             for(int i = 0; i < table.length; i++){
  7.                 table[i] = null;
  8.             }
  9.             for (Entry<K, V> e : tmp) {    
  10.                 if(e != null){
  11.                     put(e.getKey(),e.getValue());
  12.                 }
  13.             }            
  14.         }
  15.         int hash = hash(key,table.length);
  16.         Entry<K,V> et = new Entry(key, value,table[hash]);
  17.         if(table[hash] == null){
  18.             table[hash] = et;
  19.         } else {
  20.             for (Entry e = table[hash]; e != null; e = e.next) {
  21.                  // sólo necesito obtener la última entrada y así reemplazo el siguiente del último por la entrada nueva
  22.             }
  23.         }
  24.         size++;
  25.     }

Sólo queda eso para resolver lo de las colisiones, creo.

Por otro lado, dices esto:

Cita:
Mejora tus tests.
No me doy cuenta que debo mejorar de los test, sinceramente no se me ocurre un test más o que mejora hacer.

Espero sus respuestas y saludos.