La manera más rápida y más eficiente de buscar un par clave-valor en Java?
Pregunta
AVISO:
Esta pregunta no estaba destinado a ser argumentativo!
Lo que es más rápida y menos memoria drenaje manera de buscar un par clave-valor? Me va a almacenar artículos en un valor clave como la relación y necesito acceder a ellos rápidamente. ¿Debo usar una base de datos SQLite? ¿Un mapa? Una tabla hash? Un HashMap? Por favor, dar algunas ventajas / desventajas de utilizar cualquier método de búsqueda.
Solución
Cualquier basado en hash Map
estructura es el camino a seguir, siempre y cuando su función hash de la clave es eficiente. Se puede utilizar el valor id:. S como el resultado de la búsqueda a la memoria conserva durante la búsqueda
Si los datos ya está en la base de datos, sin embargo, se puede salir de esta búsqueda por entero a la RDBMS, después de todo, que están hechas de este material.
Otros consejos
Si los datos están en la memoria, Map
s en general son tus amigos - que están destinados para este
No utilice un Hashtable
sin embargo. Es mucho más lento que las implementaciones más recientes Mapa. debido a que sus métodos están sincronizados, lo que no se necesita la mayoría del tiempo (y cuando sea necesario, no es una alternativa mucho mejor - ver abajo).
En el contexto de una sola rosca, HashMap
es probablemente va a estar bien.
Si necesita hilo de seguridad, utilizar un ConcurrentHashMap
.