Ver Mensaje Individual
  #8 (permalink)  
Antiguo 21/04/2017, 22:31
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: Implementar TablaHash

Hola Tipdar verás la estructura está casi hecha tuve que hacer un truco medio chancho para continuar con el resto de las funcionalidades del HashMap casero:

Código Java:
Ver original
  1. private int getIndex(Object key) {
  2.        return (key.hashCode() & 0x7FFFFFFF) % table.length -1;
  3.     }

Tuve que restarle 1 para obtener el índice pero sé que eso no está bien, por otro lado cuando le pongo un tamaño por defecto y luego necesito agrandarlo me da este problema en la consola:

indice -> 0
indice -> 1
indice -> 2
indice -> -1
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: -1

Código Java:
Ver original
  1. public V put(K key, V value) {
  2.         if(key == null){
  3.             return null;
  4.         } else {
  5.             int index = getIndex(key);
  6.             System.out.println("indice -> "+ index);
  7.             Entry<K, V> pair = table[index];
  8.             if (pair != null && pair.getKey().equals(key)) {
  9.                 V oldValue = pair.getValue();
  10.                 pair.setValue(value);
  11.                 return oldValue;
  12.             }
  13.             setEntry(key, value, index);
  14.             return value;
  15.         }
  16.     }
  17. private void setEntry(K key, V value, int index) {
  18.         Entry<K, V> e = table[index];
  19.         while (e != null) {
  20.             index++;
  21.             if (index >= capacity) {
  22.                 table = Arrays.copyOf(table, table.length +1);
  23.                 put(key,value);
  24.                 return;
  25.             }
  26.             e = table[index];
  27.         }
  28.         table[index] = new Entry(key, value);
  29.         size++;
  30.     }

El resto de la estructura está hecha, ya pongo el código por si a alguien le interesa:

https://pastebin.com/QywGK6g8

Creo que quedaría esa parte del código para decir está listo.

Espero sus respuestas y Saludos