Ver Mensaje Individual
  #12 (permalink)  
Antiguo 23/04/2017, 19:56
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

Gracias por responder CalgaryCorpus, mira estoy probando de esta manera la estructura:

Código Java:
Ver original
  1. package hashmapsimple;
  2. public class Cuerpo
  3. {
  4.     public static void main(String[] args) {
  5.         MyMap<Integer,String>col= new MyMap();
  6.         col.put(1, "Deborah");
  7.         col.put(2, "Tommy");
  8.         col.put(3, "Franco");
  9.         col.put(4, "Manuela");
  10.         col.put(null,"pepe");
  11.         /*
  12.         java.util.HashMap<Integer, String> m = new java.util.HashMap();
  13.         m.put(5, "Miguel");
  14.         m.put(6, "Denisse");        
  15.         col.putAll(m);
  16.         */
  17.         System.out.println(" ");
  18.         System.out.println("con containsKey: " + col.containsKey(1));
  19.         System.out.println("con containsKey: " + col.containsKey(7));
  20.         System.out.println(" ");
  21.         System.out.println("con get: " + col.get(1));
  22.         System.out.println("con get: " + col.get(7));
  23.         System.out.println(" ");
  24.         System.out.println("con containsValue: " + col.containsValue("Franco"));
  25.         System.out.println("con containsValue: " + col.containsValue("Rodrigo"));
  26.         System.out.println("con containsValue: " + col.containsValue(null));
  27.         //col.remove(2);
  28.         //col.remove(7);
  29.         //col.clear();
  30.         System.out.println(" ");
  31.         System.out.println("tamaño -> " + col.size());
  32.         System.out.println(" ");
  33.         System.out.println(" --valores-- ");
  34.         col.values().stream().forEach((s) -> {
  35.             System.out.println(s);
  36.         });
  37.         System.out.println(" ");
  38.         System.out.println(" --claves-- ");
  39.         col.keySet().stream().forEach((s) -> {
  40.             System.out.println(s);
  41.         });
  42.         System.out.println(" ");
  43.         System.out.println(" --entradas-- ");
  44.         col.entrySet().stream().forEach((e)->{
  45.             System.out.println("clave -> "+ e.getKey() +" valor -> "+e.getValue());
  46.         });        
  47.     }    
  48. }

sin la resta me da esto por consola:

sólo el key.hashCode(): 1
esta expresión (key.hashCode() & 0x7FFFFFFF); 1
indice -> 1

sólo el key.hashCode(): 2
esta expresión (key.hashCode() & 0x7FFFFFFF): 2
indice -> 2

sólo el key.hashCode(): 3
esta expresión (key.hashCode() & 0x7FFFFFFF): 3
indice -> 3

sólo el key.hashCode(): 4
esta expresión (key.hashCode() & 0x7FFFFFFF): 4
indice -> 0

para ver internamente el getIndex() hice esto:

Código Java:
Ver original
  1. private int getIndex(Object key) {
  2.         System.out.println("sólo el key.hashCode(): " + key.hashCode());
  3.         System.out.println("esta expresión (key.hashCode() & 0x7FFFFFFF): " + (key.hashCode() & 0x7FFFFFFF));
  4.         return (key.hashCode() & 0x7FFFFFFF) % table.length;
  5.     }

Prácticamente la función getIndex no funciona y ahí es dónde debo replantear el asunto.

Espero sus respuestas y saludos.