Ver Mensaje Individual
  #32 (permalink)  
Antiguo 27/12/2017, 22:39
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

Muy buenas a todos, les comento que resolví el problema resulta que:

necesitaba una variable de carga de factor y otra más para mantener el órden de los datos

Código Java:
Ver original
  1. private static final float LOAD_FACTOR = 0.75f;
  2.     private static int threshold;

también tenía que cambiar el constructor

Código Java:
Ver original
  1. public MyMap(int xcap) {
  2.         if(xcap <= 0){
  3.             throw new IllegalArgumentException("Capacidad no permitida: " + xcap);
  4.         }
  5.         threshold = (int) (xcap * LOAD_FACTOR);
  6.         table = new Entry[xcap];
  7.         size = 0;
  8.         init();
  9.     }

además de rehacer el addEntry

Código Java:
Ver original
  1. private void addEntry(K key, V value){
  2.         if(size >= threshold){
  3.             Entry newTable[] = new Entry[table.length * 2];
  4.             transfer(newTable);
  5.             table = newTable;
  6.             threshold = (int)(newTable.length * LOAD_FACTOR);
  7.         }
  8.         createEntry(key, value);
  9.     }

y poner un método de transferencia de datos

Código Java:
Ver original
  1. private void transfer(Entry newTable[]){
  2.         for (Entry<K, V> entry : table) {
  3.             if (entry != null) {
  4.                 Entry<K,V> current = entry;
  5.                 while(current != null){
  6.                     Entry<K,V> et = current;
  7.                     current = current.next;
  8.                     int index = hash(et.key,newTable.length);
  9.                     et.next = newTable[index];
  10.                     newTable[index] = et;
  11.                 }
  12.             }
  13.         }
  14.     }

Con eso ahora puedo ordenar por inserción, pero CalgaryCorpus te quería preguntar lo siguiente, en la parte que dices:

Cita:
Haz un metodo que te permita espiar tus estructuras y espialas por cada insercion que hagas, luego revisa el metodo que usas para imprimir los datos.
No se me ocurre otra forma de espiar que mostrar los mensajes con System.out.println.

Pongo el código: https://goo.gl/Ar3vMN

Espero sus respuestas y saludos.