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

Hola a todos, finalmente pude con el problema de las colisiones, era de esto:

Código Java:
Ver original
  1. @Override
  2.     public V put(K key, V value) {
  3.         if(key != null){
  4.             int hash = hash(key,table.length);
  5.             for(Entry<K,V> e = table[hash]; e != null; e = e.next){
  6.                 if(e.getKey().equals(key)){
  7.                     V oldValue = e.getValue();
  8.                     e.setValue(value);
  9.                     return oldValue;
  10.                 }                
  11.             }
  12.             this.addEntry(key, value);
  13.             return value;                    
  14.         } else {
  15.             return null;
  16.         }
  17.     }

a esto, tuve que agregar otro if para lo de las colisiones:

Código Java:
Ver original
  1. @Override
  2.     public V put(K key, V value) {
  3.         if(key != null){
  4.             int hash = hash(key,table.length);
  5.             for(Entry<K,V> e = table[hash]; e != null; e = e.next){
  6.                 if(e.getKey().equals(key)){
  7.                     V oldValue = e.getValue();
  8.                     e.setValue(value);
  9.                     return oldValue;
  10.                 } else if(e.next == null){
  11.                     e.next = new Entry(key,value);
  12.                     size++;
  13.                     return value;
  14.                 }                
  15.             }
  16.             this.addEntry(key, value);
  17.             return value;                    
  18.         } else {
  19.             return null;
  20.         }
  21.     }

Ahora bien, seguiré haciendo pruebas a parte de las subidas en github, por lo que pido nuevamente que si ven que hay que mejorar del código y de los test que me lo escriban, así podré darle al clavo.

https://github.com/detectivejd/HashS.../hashsetsimple

https://github.com/detectivejd/HassM.../hashmapsimple

Espero sus respuestas y saludos.

Última edición por detective_jd; 11/06/2017 a las 18:48