Ayuda con Tabla Hash
Hola, estoy programando una tabla hash. La clave es un string y los valores son double[2]. El problema es q me almacena siempre el mismo valor, el ultimo q le meto por cierto. Si alguien ha trabajado con tablas hash o sabe donde hay ejemplos, por favor que m lo diga.
Gracias.
Gracias.
Si lo que haces es algo como:
double[] d=new double[2];
d[0]=1.0;
d[1]=2.0;
hash.put("valor1",d);
d[0]=3.0;
d[1]=4.0;
hash.put("valor2",d);
Las claves "valor1" y "valor2" guardan la referencia al mismo objeto, al único double[] que tienes en tu programa y que vas modificando antes de cada put.
Para evitar esto has de hacer un new para cada nuevo valor:
double[] d=new double[2];
d[0]=1.0;
d[1]=2.0;
hash.put("valor1",d);
d = new double[2];
d[0]=3.0;
d[1]=4.0;
Saludos!
double[] d=new double[2];
d[0]=1.0;
d[1]=2.0;
hash.put("valor1",d);
d[0]=3.0;
d[1]=4.0;
hash.put("valor2",d);
Las claves "valor1" y "valor2" guardan la referencia al mismo objeto, al único double[] que tienes en tu programa y que vas modificando antes de cada put.
Para evitar esto has de hacer un new para cada nuevo valor:
double[] d=new double[2];
d[0]=1.0;
d[1]=2.0;
hash.put("valor1",d);
d = new double[2];
d[0]=3.0;
d[1]=4.0;
Saludos!
Y en el hashtable estás poniendo objetos distintos (distintos double[])???...recordá que lo que guardas son referencias a un objeto no "fotos" de un objeto....por ahí si posteas el código te podemos ayudar, pero por ejemplo si haces:
java.util.Hashtable table = new java.util.Hashtable();
double[] array = new double[2];
array[0] = 1;
array[1] = 1;
table.put("primero", array);
array[0] = 2;
array[1] = 2;
table.put("segundo", array);
array = (double[])table.get("primero");
System.out.println(array[0]);
System.out.println(array[1]);
vas a ver que si bien estas recuperando el "primero" los valores que obtenes son = 2.
java.util.Hashtable table = new java.util.Hashtable();
double[] array = new double[2];
array[0] = 1;
array[1] = 1;
table.put("primero", array);
array[0] = 2;
array[1] = 2;
table.put("segundo", array);
array = (double[])table.get("primero");
System.out.println(array[0]);
System.out.println(array[1]);
vas a ver que si bien estas recuperando el "primero" los valores que obtenes son = 2.