implementar example bootstrap java hash hashmap

java - example - jsf jpa crud



¿Cómo creo una tabla hash en Java? (7)

¿Cuál es la forma más directa de crear una tabla hash (o matriz asociativa ...) en Java? Mi google-fu ha aparecido un par de ejemplos, pero ¿existe una forma estándar de hacerlo?

¿Y hay una manera de poblar la tabla con una lista de pares clave-> valor sin llamar individualmente un método de agregar en el objeto para cada par?


¿Y hay una manera de poblar la tabla con una lista de pares clave-> valor sin llamar individualmente un método de agregar en el objeto para cada par?

Un problema con su pregunta es que no menciona en qué forma están sus datos para comenzar. Si su lista de pares resulta ser una lista de objetos Map.Entry, sería bastante fácil.

Para descartar esto, hay una clase (muy difamada) llamada java.util.Properties que es una extensión de Hashtable. Solo espera llaves y valores de cadena y le permite cargar y almacenar los datos usando archivos o flujos. El formato del archivo que lee y escribe es el siguiente:

key1=value1 key2=value2

No sé si esto es lo que estás buscando, pero hay situaciones en las que esto puede ser útil.


Tampoco olvide que Map y Hashtable son genéricos en Java 5 y posteriores (como en cualquier otra clase en el marco de Colecciones ).

Map<String, Integer> numbers = new HashMap<String, Integer>(); numbers.put("one", 1); numbers.put("two", 2); numbers.put("three", 3); Integer one = numbers.get("one"); Assert.assertEquals(1, one);


Map map = new HashMap(); Hashtable ht = new Hashtable();

Ambas clases se pueden encontrar en el paquete java.util. La diferencia entre los 2 se explica en la siguiente entrada de preguntas frecuentes de jGuru .


Puede usar llaves dobles para configurar los datos. Todavía llamas agregar, o poner, pero es menos feo:

private static final Hashtable<String,Integer> MYHASH = new Hashtable<String,Integer>() {{ put("foo", 1); put("bar", 256); put("data", 3); put("moredata", 27); put("hello", 32); put("world", 65536); }};


import java.util.HashMap; Map map = new HashMap();


Es importante tener en cuenta que la función hash de Java es menos que óptima. Si quieres menos colisiones y la eliminación casi completa de volver a hash con ~ 50% de capacidad, usaría un algoritmo Buz Hash Buz Hash

La razón por la cual el algoritmo de hashing de Java es débil es más evidente en la forma en que hahecha cadenas.

"a".hash() da la representación ASCII de "a" - 97 , por lo que "b" sería 98 . El objetivo de hashing es asignar un número arbitrario y "tan aleatorio como sea posible".

Si necesita una tabla hash rápida y sucia, use java.util . Si está buscando algo robusto que sea más escalable, buscaría implementar el suyo propio.


Lo que Edmund dijo.

En cuanto a no llamar .Add todo el tiempo, no, no idiomáticamente. Habría varios hacks (almacenándolos en una matriz y luego bucles) que podría hacer si realmente quisiera, pero yo no lo recomendaría.