Estoy tratando de determinar una forma rápida de almacenar un conjunto de objetos, cada uno de los cuales tiene un valor de coordenada xey, de modo que pueda recuperar rápidamente todos los objetos dentro de un determinado rectángulo o círculo Para pequeños conjuntos de objetos (~ 100), el enfoque ingenuo de simplemente almacenarlos en una lista y repetirlos es relativamente rápido. Sin embargo, para grupos mucho más grandes, se espera que sea lento. He intentado almacenándolos en un par de TreeMaps así, uno ordenados en la coordenada x, y uno ordenados en la coordenada y, utilizando este código:Almacenamiento de objetos para localizar por coordenadas x, y
xSubset = objectsByX.subSet(minX, maxX);
ySubset = objectsByY.subSet(minY, maxY);
result.addAll(xSubset);
result.retainAll(ySubset);
Esto también funciona, y es más rápido para mayor conjuntos de objetos, pero aún es más lento de lo que quisiera. Parte del problema es que estos objetos se mueven y deben insertarse de nuevo en este almacenamiento, lo que significa eliminarlos y volver a agregarlos a los árboles/listas. No puedo evitar pensar que debe haber mejores soluciones. Estoy implementando esto en Java, si hace alguna diferencia, aunque espero que cualquier solución tenga más la forma de un patrón/algoritmo útil.
Vaya, demasiado lento ... –