Pregunta

que he creado muchos objetos de geodatos (nombre, postalCode, lat, lon). Ahora quiero ponerlos en una colección para buscar diferentes entradas más tarde.

Todo lo que debe suceder a objetos / en memoria, por lo que shouln't existir la necesidad de una base de datos relacional.

Tal consulta se parece a:

  • Para lat y lon por nombre o PLZ
  • Encuentra objetos entre LAT1, LAT2 y Lon1, Lon2

Lo colección es el mejor para una estructura de datos como "simple"?

Lo que la complejidad es necesaria para una consulta de este tipo? Multithreading puede ser un beneficio? Si es así, qué colección se utiliza en el mejor para la seguridad hilo?

¿Existe la posibilidad de escribir este tipo de consultas en una base de datos valor de clave =>?

¿Fue útil?

Solución

Se podría utilizar un base de datos en memoria .

Esto es bueno como bases de datos relacionales son buenas para consultas relacionales como estas ....: -)


Para el hogar-hechos Java puro , se puede usar:

  1. Map, con el nombre como la clave
  2. Map, con la PLZ como tecla
  3. List<List<"object">> con LAT para la primera lista, LON para la segunda lista.
    Ambos están ordenados, por lo que para cada uno se puede buscar un valor utilizando binario de búsqueda, y devolver un intervalo de manera eficiente con subList.

Esto equivale a una duplicación de las llaves, pero no para todos los objetos, como se puede volver a utilizar los mismos objetos de instancia en todos estos casos.

Multi-threading es aceptable (si su necesidad es por otras razones), pero dudo que necesita introducir para mejorar el rendimiento de una sola búsqueda. Las estructuras de datos mencionados deben ofrecer las respuestas correctas en menos de un milisegundo!

Tema-seguridad no es un problema para estas estructuras de datos, como su caso de uso parece ser de sólo lectura. Si necesita modificar los "objetos" en algún caso, entonces sólo puede proteger a los "objetos" en sí, no las estructuras de datos utilizadas para la búsqueda.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top