Ver Mensaje Individual
  #16 (permalink)  
Antiguo 24/04/2017, 22:47
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 CalgaryCorpus cambié un poquito el código para simplificarlo:

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

Estuve pensando en lo que me dijiste pero no le doy al clavo, te pongo la parte donde inicia, y todo xq no me encuentra el índice para posicionarlo en el array:

Código Java:
Ver original
  1. private int capacity;
  2.     private int size;
  3.     private static final int DEFAULT_SIZE = 4;
  4.     private Entry<K,V>[] table;    
  5.     public MyMap() {
  6.         this(DEFAULT_SIZE);
  7.     }
  8.     public MyMap(int xcapacity) {
  9.         if(xcapacity <= 0){
  10.             throw new IllegalArgumentException("Capacidad no permitida: " + capacity);
  11.         } else {
  12.             this.capacity = xcapacity;        
  13.         }
  14.         this.clear();
  15.     }
  16.     public MyMap(Map<? extends K, ? extends V> m) {
  17.         this.putAll(m);
  18.     }
  19.     @Override
  20.     public void clear() {
  21.         table = new Entry[capacity];
  22.         size = 0;
  23.     }

¿Cómo lo implementarías? ya que me queda sólo esto para terminar con la estructura.

Espero sus respuestas y Saludos.

Última edición por detective_jd; 24/04/2017 a las 23:17