J'essaie de déterminer un moyen rapide de stocker un ensemble d'objets, dont chacun a une valeur de coordonnées x et y, de sorte que je puisse récupérer rapidement tous les objets dans un certain rectangle ou cercle. Pour les petits ensembles d'objets (~ 100), l'approche naïve consistant à simplement les stocker dans une liste et à les parcourir est relativement rapide. Cependant, pour des groupes beaucoup plus importants, cela devrait être lent. J'ai essayé de les stocker dans une paire de TreeMaps ainsi, une triées sur le coordonnée x et une triées sur le coordonnée y, en utilisant ce code:Stockage d'objets pour la localisation par coordonnées x, y
xSubset = objectsByX.subSet(minX, maxX);
ySubset = objectsByY.subSet(minY, maxY);
result.addAll(xSubset);
result.retainAll(ySubset);
Cela fonctionne aussi, et est plus rapide pour agrandir ensembles d'objets, mais est encore plus lent que je le voudrais. Une partie du problème est également que ces objets se déplacent et doivent être réinsérés dans ce stockage, ce qui signifie qu'ils doivent être supprimés et ajoutés de nouveau aux arbres/listes. Je ne peux m'empêcher de penser qu'il doit y avoir de meilleures solutions. J'implémente ceci en Java, si cela fait une différence, même si je m'attends à ce que toute solution soit plus sous la forme d'un modèle/algorithme utile.
Oops, trop lent ... –